Access を SQL Server に接続する
Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

食事時のアルファベット スープが楽しみだった平和な幼年時代を思い出しましょう。 その幸せな記憶を心の片隅に留めつつ、データベース版のアルファベット スープをご試食ください。 以下のセクションは、接続文字列を扱うデータベースの入門となっています。また、Access VBA コードでデータベース プログラミング インターフェイスを使用する基礎についても詳しく説明します。

データ アクセスのコンポーネント

この記事の内容

ODBC ドライバーまたは OLE DB プロバイダーを使用する

Access から SQL Server へのプログラムによるインターフェイス

ODBC ドライバー バージョンの概要

OLE DB プロバイダー バージョンの概要

ODBC キーワードの概要

OLE DB キーワードの概要

ODBC ドライバーまたは OLE DB プロバイダーを使用する

接続文字列は長い間、使用されています。 Access ユーザー インターフェイスまたは VBA コードのいずれかで、書式設定された接続文字列を定義できます。 接続文字列 (ODBC または OLE DB) により、サーバーの場所、データベース名、セキュリティの種類、その他の便利なオプションなどの情報がデータベースに直接渡されます。 次に例を示します。

ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;

最初に登場したのが SQL Server Native Client (SNAC) というスタンドアロン ライブラリでした。これには ODBC テクノロジと OLEDB テクノロジが含まれていました。SQL Server の 2005 から 2012 までのバージョンで現在でもご利用いただけます。 数多くの旧式のアプリケーションで SNAC が使用されていました。SNAC は現在でも下位互換性のためにサポートされていますが、新しいアプリケーション開発で使用することは推奨されていません。 それより後に公開された、ダウンロード可能な各種バージョンの ODBC ドライバーをご使用ください。

ODBC ドライバー

ODBC (Open Database Connectivity) は、Access データベースを Microsoft SQL Server などの外部データ ソースに接続する目的で使用するプロトコルです。 通常は、ファイル データ ソース (DSN ファイルとも呼ばれています) を使用して接続文字列を追加します。その場合、FILEDSN キーワードが接続文字列で使用されるか、レジストリに保存されます。レジストリに保存される場合、DSN キーワードが使用されます。 また、VBA を使用し、"DSN なし" の接続文字列でこれらのプロパティを設定することもできます。

ODBC ドライバーは数年にわたり、3 つのフェーズで出荷されてきました。

  • 2005 年より前は、ODBC ドライバーは Windows Data Access Components (WDAC) に付属していました。これはもともと、Microsoft Data Access Components (MDAC) と呼ばれていました。 これらのコンポーネントは現在でも、下位互換性のために Windows に付属しています。 詳細については、「Microsoft または Windows Data Access Components」を参照してください。

  • ODBC ドライバーは、SQL Server 2005 から SQL Server 2012 までの SNAC に付属していました。

  • SQL Server 2012 より後になると、ODBC ドライバーは個別に出荷されるようになり、新しい SQL Server 機能のサポートが含まれています。

新しく開発する場合、最初の 2 フェーズの ODBC ドライバーを使用せず、第 3 フェーズの ODBC ドライバーを使用してください。

OLE DB プロバイダー

OLE DB (Object Linking and Embedding, Database) は、Access データベースを Microsoft SQL Server などの外部データ ソースに接続する目的で使用する最新のプロトコルです。 OLE DB には DSN が必要ありませんが、ODBC データ ソースや ODBC ドライバーに対する完全なアクセスを提供します。

ヒント    通常は、[データ リンク プロパティ] ダイアログ ボックスを使用し、OLE DB 接続文字列を追加します。 Access から [データ リンク プロパティ] ダイアログ ボックスを開く方法はありませんが、エクスプローラーで、空の .txt ファイルを作成し、ファイルの種類を .udl に変更し、そのファイルをダブルクリックするという方法があります。 接続文字列を作成したら、ファイルの種類を .txt に戻します。

OLE DB プロバイダーは数年にわたり、3 つのフェーズで出荷されてきました。

  • 2005 年より前は、OLE DB プロバイダーは Windows Data Access Components (WDAC) に付属していました。これはもともと、Microsoft Data Access Components (MDAC) と呼ばれていました。

  • OLE DB プロバイダーは、SQL Server 2005 から SQL Server 2017 までに付属していました。 2011 年に非推奨となりました。

  • 2017 年、SQL Server OLE DB プロバイダーの非推奨が解除されました。

新しいソリューション開発のために現在推奨されているバージョンは、OLE DB Driver 18 for SQL Server です。

ODBC 接続文字列でパフォーマンスを最適化する方法

パフォーマンスを最適化し、ネットワーク トラフィックを最小限に抑え、SQL Server データベースに対するマルチユーザー アクセスを削減するには、複数のレコード セットで接続文字列を共有して、使用する接続文字列を可能な限り少なくします。 Ace では単純にサーバーに接続文字列が渡されるだけですが、次のキーワードが理解され、使用されます。クライアント/サーバーの通信を最小限にすることができる DSN、DATABASE、UID、PWD、DRIVER。

    外部データ ソースへの ODBC 接続が失われると、Access では自動的に再接続が試行されます。 再試行に成功すると、作業を続行できます。 再試行に失敗しても、接続に依存しないオブジェクトは引き続き使用できます。 再接続するには、Access​​ を閉じ、もう一度開きます。

ODBC と OLE DB の両方を使用する場合の推奨事項

接続文字列のテクノロジとデータベース アクセスのテクノロジを混在させないでください。 DAO には ODBC 接続文字列を使用します。 ADO には OLE DB 接続文字列を使用します。 DAO と ADO の両方が使用される VBA コードがアプリケーションに含まれている場合、DAO には ODBC ドライバーを、ADO には OLE DB プロバイダーを使用します。 ODBC と OLEDB の両方にそれぞれ、最新の機能とサポートを取得するように努力します。

ODBC では "ドライバー" という用語が使用され、OLE DB では "プロバイダー" という用語が使用されます。 これらの用語は同じ種類のソフトウェア コンポーネントを表しますが、接続文字列の構文で入れ替えることはできません。 文書どおりの正しい値を使用してください。

ページの先頭へ

Access から SQL Server へのプログラムによるインターフェイス

Access から SQL Server にプログラムでインターフェイス接続するとき、主に 2 つの方法があります。

DAO

データ アクセス オブジェクト (DAO) からは、データベースへの抽象的インターフェイスが与えられます。 Microsoft Data Access Objects (DAO) はネイティブ プログラミング オブジェクト モデルであり、Access と SQL Server を活用し、オブジェクト、テーブル、フィールド、インデックス、リレーション、クエリ、プロパティ、外部データベースを作成、削除、変更、一覧表示することができます。

詳細については、「Microsoft Data Access Objects リファレンス」を参照してください。

ADO

ActiveX データ オブジェクト (ADO) からは、ハイレベルのプログラミング モデルが与えられます。サード パーティ ライブラリを参照することにより Access で利用できます。 ADO は学習が簡単で、クライアント アプリケーションによって、Access や SQL Server など、さまざまなソースのデータにアクセスしたり、操作したりすることができます。 その主な長所には、使いやすさ、高速であること、メモリ オーバーヘッドが低いこと、ディスク フットプリントが少ないことがあります。 ADO では、Web ベースのアプリケーションを構築するための主な機能もサポートされています。

詳細については、「Microsoft ActiveX データ オブジェクト リファレンス」と「Microsoft ActiveX データ オブジェクト (ADO)」を参照してください。

どちらを使うべきでしょうか。

VBA コードを使用する Access ソリューションの場合、DAO、ADO、または両方をデータベース インターフェイスのテクノロジとして使用できます。 DAO は引き続き、Access において既定で使用されます。 たとえば、すべてのフォーム、レポート、および Access クエリで DAO が使用されます。 ただし、SQL Server に移行する場合、ADO を使用してソリューションの効率を高めることを検討してください。 DAO または ADO のいずれを使用すべきかを判断するための一般的なガイドラインを次に示します。

次の場合は、DAO を使用します:

  • VBA を使用せず、バインドされた読み取り/書き込みフォームを作成する。

  • ローカルテーブルでクエリを実行する。

  • 一時的なテーブルにデータをダウンロードする。

  • 読み取り専用モードでレポートまたはフォームのデータ ソースとしてパススルー クエリを使用する。

  • VBA で TableDef または Querydef オブジェクトを定義して使用する。

次の場合は、ADO を使用します:

  • 非同期操作の実行など、他の最適化方法を活用する。

  • DDL および DML パススルー クエリを実行する。

  • VBA のレコードセットを使用し、SQL Server のデータに直接アクセスする。

  • BLOB のストリーミングなど、特定のタスクの簡単なコードを記述する。

  • VBA でコマンド オブジェクトを使用し、パラメーターを指定してストアド プロシージャを直接呼び出す。

ページの先頭へ

ODBC ドライバー バージョンの概要

次の表は、ODBC ドライバーのバージョン、ダウンロードの場所、機能サポートについて重要な情報をまとめたものです。 Office ではなく、Windows に基づき、正しいビット版のドライバー (64 ビットまたは 32 ビット) を使用していることを確認してください。 64 ビット版 Windows で 32 ビット版 Access を実行している場合、64 ビット版のドライバーをインストールします。これには Access に必要な 32 ビット コンポーネントが含まれています。

詳細については、「Using Connection String Keywords with SQL Server Native Client」 (SQL Server ネイティブ クライアントで接続文字列キーワードを使用する)、「Release Notes for ODBC to SQL Server on Windows (V17)」 (Windows 上の SQL Server のための ODBC に関するリリース ノート (V17))、「Features of the Microsoft ODBC Driver for SQL Server on Windows (V13, 11)」 (Windows 上の SQL Server のための Microsoft ODBC ドライバーの機能 (V13、11)) を参照してください。

ODBC ドライバー

バージョン

ダウンロード

新機能

ODBC ドライバー 17.0 - 17.3

SQL Server 2017

ダウンロード

ODBC ドライバー 17.3

ODBC ドライバーで Azure Active Directory を使用する

"常に暗号化" 使用時の ODBC ドライバーの制限

XA トランザクションの使用

ODBC ドライバー 17.2

"常に暗号化" と SQL Server 向け ODBC ドライバーの使用

データ分類

UTF-8 サーバー エンコーディングの照合およびユニコード サポート

ODBC ドライバー 17.1

"常に暗号化" と SQL Server 向け ODBC ドライバーの使用

ODBC ドライバー 17.0

常に暗号化

UseFMTONLY    一時的なテーブルを必要とする特殊なケースで旧メタデータを使用する場合。 「Release Notes for ODBC to SQL Server on Windows」 (Windows 上の SQL Server のための ODBC に関するリリース ノート) を参照してください

マネージド インスタンス使用時の違い (ODBC バージョン 17)

ODBC ドライバー 13.1

SQL Server 2016 SP1、SQL Azure

ダウンロード

常に暗号化

Azure Active Directory

AlwaysOn 可用性グループ

ODBC Driver for SQL Server のドライバー対応接続プール

ODBC ドライバー 13.0

SQL Server 2016

ダウンロード

国際化ドメイン名 (IDN)

ODBC ドライバー 11.0

SQL Server 2005 - 2012

ダウンロード

ドライバー対応接続プール

Windows ODBC ドライバーの接続回復性

非同期実行

クライアント接続 (ODBC) におけるサービス プリンシパル名 (SPN)

Windows 上の Microsoft ODBC Driver for SQL Server の機能

ページの先頭へ

OLE DB プロバイダー バージョンの概要

次の表は、OLE DB プロバイダーのバージョン、ダウンロードの場所、機能サポートに関する重要な情報をまとめたものです。 Office ではなく、Windows に基づき、正しいビット版のドライバー (64 ビットまたは 32 ビット) を使用していることを確認してください。 64 ビット版 Windows で 32 ビット版 Access を実行している場合、64 ビット版のドライバーをインストールします。これには Access に必要な 32 ビット コンポーネントが含まれています。

詳細については、「SQL Server Native Client で接続文字列キーワードを使用する」を参照してください。

OLE DB プロバイダー

バージョン

ダウンロード

新機能

OLE DB ドライバー 18.2.1

(MSOLEDBSQL)

SQL Server 2017

ダウンロード

OLE DB Driver for SQL Server Feature」 (SQL Server 向け OLE DB ドライバーの機能) と「Release notes for the Microsoft OLE DB Driver, for SQL Server」 (SQL Server 向け Microsoft OLE DB ドライバーのリリース ノート) を参照してください。

SQL Server Native Client (SQLNCLI)

SQL Server 2005 - 2012

非推奨、使用しないでください

OLE DB ドライバー (SQLOLEDB)

非推奨、使用しないでください

ページの先頭へ

ODBC キーワードの概要

次の表は、SQL Server で認識される ODBC キーワードとその目的をまとめたものです。 サブセットのみが Access により認識されます。

キーワード

説明

Addr

SQL Server のインスタンスを実行しているサーバーのネットワーク アドレス。

AnsiNPW

NULL 比較を処理するための ANSI 定義動作、文字データ パディング、警告、NULL 連結の使用方法を指定します (Yes または No)。

APP

SQLDriverConnect を呼び出すアプリケーションの名前。

ApplicationIntent

サーバーに接続するときに、アプリケーションのワークロードの種類を宣言します (ReadOnly または ReadWrite)。

AttachDBFileName

アタッチ可能データベースのプライマリ ファイルの名前。

AutoTranslate

クライアントまたはサーバー間で ANSI 文字列を送信するかどうか、またはユニコードに変換するかどうかを指定します (Yes または No)。

Database

データベース名。 Description 接続の目的。 Driver SQLDrivers により返されるドライバーの名前。

DSN

既存の ODBC ユーザーまたはシステム データ ソースの名前。 Encrypt ネットワーク経由で送信する前にデータを暗号化するかどうかを指定します (Yes または No)。

Failover_Partner

プライマリ サーバーに接続できない場合に使用されるフェールオーバー パートナー サーバーの名前。

FailoverPartnerSPN

フェールオーバー パートナーの SPN。

Fallback

非推奨のキーワード。

FileDSN

既存の ODBC ファイル データ ソースの名前。 Language SQL Server 言語。

MARS_Connection

SQL Server 2005 (9.x) 以降の接続に MARS (Multiple Active Result Sets/複数のアクティブ結果セット) を指定します (Yes または No)。

MultiSubnetFailover

SQL Server 可用性グループまたは Failover Cluster Instance の可用性グループ リスナーに接続するかどうかを指定します (Yes または No)。

Net

dbnmpntw は名前付きパイプを示し、dbmssocn は TCP/IP を示します。

PWD

SQL Server ログイン パスワード。

QueryLog_On

長時間実行されるクエリのログ記録を指定します (Yes または No)。

QueryLogFile

長時間実行されるクエリに関するデータをログに記録するためのファイルの完全パスとファイル名。

QueryLogTime

長時間実行されるクエリをログに記録するときのしきい値 (ミリ秒単位) を指定する数字文字列。

QuotedId

SQL ステートメントにおける引用符の使用について、SQL Server で ISO ルールを使用するかどうかを指定します (Yes または No)。

Regional

通貨、日付、時刻データを文字データに変換するとき、SQL Server Native Client ODBC ドライバーでクライアント設定を使用するかどうかを指定します (Yes または No)。

SaveFile

接続に成功した場合、現在の接続の属性が保存される ODBC データ ソース ファイルの名前。

Server

SQL Server インスタンスの名前:ネットワーク上のサーバー、IP アドレス、構成マネージャーのエイリアス。

ServerSPN

サーバーの SPN。

StatsLog_On

SQL Server Native Client ODBC ドライバーのパフォーマンス データのキャプチャを有効にします。

StatsLogFile

SQL Server Native Client ODBC ドライバーのパフォーマンス統計を記録するためのファイルの完全パスとファイル名。

Trusted_Connection

Windows Authentication Mode か SQL Server のユーザー名またはパスワードをログイン検証に使用するかどうかを指定します (Yes または No)。

TrustServerCertificate

暗号化と共に使用するとき、自己署名のサーバー証明書による暗号化を有効にします。

UID

SQL Server ログイン名。

UseProcForPrepare

非推奨のキーワード。

WSID

ワークステーション ID、すなわち、アプリケーションが置かれているコンピューターのネットワーク名。

ページの先頭へ

OLE DB キーワードの概要

次の表は、SQL Server で認識される OLE DB キーワードとその目的をまとめたものです。 サブセットのみが Access により認識されます。

キーワード

説明

Addr

SQL Server のインスタンスを実行しているサーバーのネットワーク アドレス。

APP

アプリケーションを識別する文字列。

ApplicationIntent

サーバーに接続するときに、アプリケーションのワークロードの種類を宣言します (ReadOnly または ReadWrite)。

AttachDBFileName

アタッチ可能データベースのプライマリ ファイルの名前。

AutoTranslate

OEM/ANSI 文字変換を構成します (True または False)。

Connect Timeout

データ ソース初期化が完了するまでの待機時間 (秒単位)。

Current Language

SQL Server の言語名。

Data Source

組織の SQL Server のインスタンス名。

Database

データベース名。

DataTypeCompatibility

使用されるデータ型処理のモードを示す数字。

Encrypt

ネットワーク経由で送信する前にデータを暗号化するかどうかを指定します (Yes または No)。

FailoverPartner

データベース ミラーリングに使用されるフェールオーバー サーバーの名前。

FailoverPartnerSPN

フェールオーバー パートナーの SPN。

Initial Catalog

データベース名。

Initial File Name

アタッチ可能データベースのプライマリ ファイルの名前 (完全パス名を含む)。

Integrated Security

Windows 認証に使用されます (SSPI)。

Language

SQL Server 言語。

MarsConn

SQL Server 2005 (9.x) 以降の接続に MARS (Multiple Active Result Sets/複数のアクティブ結果セット) を指定します (Yes または No)。

Net

組織の SQL Server インスタンスへの接続を確立するために使用されるネットワーク ライブラリ。

Network Address

組織の SQL Server インスタンスのネットワーク アドレス。

PacketSize

ネットワーク パケット サイズ。 既定値は 4096 です。

Persist Security Info

Persist Security が有効かどうかを指定します (True または False)。

PersistSensitive

Persist Sensitive が有効かどうかを指定します (True または False)。

Provider

SQL Server Native Client の場合、これは SQLNCLI11 になります。

PWD

SQL Server ログイン パスワード。

Server

SQL Server インスタンスの名前:ネットワーク上のサーバー、IP アドレス、構成マネージャーのエイリアス。

ServerSPN

サーバーの SPN。

Timeout

データ ソース初期化が完了するまでの待機時間 (秒単位)。

Trusted_Connection

Windows Authentication Mode か SQL Server のユーザー名またはパスワードをログイン検証に使用するかどうかを指定します (Yes または No)。

TrustServerCertificate

サーバー証明書が検証されるかどうかを指定します (True または False)。

UID

SQL Server ログイン名。

Use Encryption for Data

ネットワークに送信する前にデータを暗号化するかどうかを指定します (True または False)。

UseProcForPrepare

非推奨のキーワード。

WSID

ワークステーション ID、すなわち、アプリケーションが置かれているコンピューターのネットワーク名。

ページの先頭へ

ODBC データ ソースを管理する

リンク付きテーブルを管理する

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。