次の方法で共有


リンク サーバー (データベース エンジン)

SQL Server データベース エンジンが、SQL Serverのインスタンスの外部にある OLE DB データ ソースに対してコマンドを実行できるように、リンク サーバーを構成します。 通常、リンク サーバーは、SQL Server の別のインスタンスまたは別のデータベース製品 (Oracle など) のテーブルを含んだ Transact-SQL ステートメントをデータベース エンジンから実行できるように構成されます。 多くの種類の OLE DB データ ソースは、Microsoft Access や Excel など、リンク サーバーとして構成できます。 リンク サーバーには次の利点があります。

  • SQL Serverの外部のデータにアクセスできる。

  • 企業内のさまざまなデータ ソースに対して分散クエリ、更新、コマンド、およびトランザクションを実行できる。

  • さまざまなデータ ソースを同じように処理できる。

リンク サーバーは、SQL Server Management Studio または sp_addlinkedserver (Transact-SQL) ステートメントを使用して構成できます。 各 OLE DB プロバイダーは、必要なパラメーターの数と型という点で大きく異なります。 たとえば、一部のプロバイダーでは、 sp_addlinkedsrvlogin (Transact-SQL) を使用して接続のセキュリティ コンテキストを指定する必要があります。 SQL Server から OLE DB ソース上のデータを更新できる OLE DB プロバイダーもあれば、 読み取り専用データ アクセスに特化したものも存在します。 各 OLE DB プロバイダーの詳細については、該当する OLE DB プロバイダーのドキュメントを参照してください。

リンク サーバーのコンポーネント

リンク サーバーの定義では、次のオブジェクトを指定します。

  • OLE DB プロバイダー

  • OLE DB データ ソース

OLE DB プロバイダー は、特定のデータ ソースを管理し、相互運用する DLL です。 OLE DB データ ソース は、OLE DB を使用してアクセスできる特定のデータベースを識別します。 リンク サーバーの定義を使用してクエリが行われるデータ ソースは通常はデータベースですが、さまざまなファイルやファイル形式用の OLE DB プロバイダーが存在します。 これには、テキスト ファイル、ワークシートのデータ、およびフルテキスト検索の結果が含まれます。

Microsoft SQL Server Native Client OLE DB Provider (PROGID: SQLNCLI11) は、SQL Serverの公式 OLE DB プロバイダーです。

注意

SQL Server 分散クエリは、必要な OLE DB インターフェイスを実装しているすべての OLE DB プロバイダーで処理できるように設計されています。 ただし、SQL Serverは、SQL Server Native Client OLE DB プロバイダーとその他の特定のプロバイダーに対してのみテストされています。

リンク サーバーの詳細

次の図に、基本的なリンク サーバー構成を示します。

クライアント層、サーバー層、およびデータベース サーバー層

リンク サーバーは、通常は分散クエリの処理に使用します。 クライアント アプリケーションからリンク サーバー経由で分散クエリが実行されるときは、 SQL Server でコマンドが解析され、OLE DB に要求が送信されます。 行セット要求は、プロバイダーに対するクエリの実行や、プロバイダーのベース テーブルを開くなどの形式をとります。

データ ソースがリンク サーバー経由でデータを返すには、そのデータ ソースの OLE DB プロバイダー (DLL) が SQL Serverのインスタンスと同じサーバー上に存在する必要があります。

サード パーティの OLE DB プロバイダーを使用する場合、SQL Server サービスを実行するアカウントには、ディレクトリと、プロバイダーがインストールされているすべてのサブディレクトリに対する読み取りと実行のアクセス許可が必要です。

プロバイダーの管理

SQL Server が OLE DB プロバイダーを読み込んで使用する方法を制御する一連のオプションは、レジストリで指定されます。

リンク サーバー定義の管理

リンク サーバーをセットアップするときは、接続情報とデータ ソース情報を SQL Serverに登録します。 登録後、1 つの論理名でデータ ソースを参照できます。

ストアド プロシージャとカタログ ビューを使用して、リンク サーバーの定義を管理できます。

  • sp_addlinkedserverを実行して、リンク サーバーの定義を作成します。

  • sys.servers システム カタログ ビューに対してクエリを実行して、SQL Serverの特定のインスタンスで定義されているリンク サーバーに関する情報を表示します。

  • sp_dropserverを実行して、リンク サーバーの定義を削除します。 このストアド プロシージャを使用して、リモート サーバーを削除することもできます。

SQL Server Management Studioを使用して、リンク サーバーを定義することもできます。 オブジェクト エクスプローラーで [サーバー オブジェクト] を右クリックし、 [新規作成] をポイントして、 [リンク サーバー] をクリックします。 リンク サーバー名を右クリックして [削除] をクリックすると、リンク サーバーの定義を削除できます。

リンク サーバーに対して分散クエリを実行する場合は、クエリを実行するデータ ソースごとに 4 つの部分で構成される完全修飾テーブル名を指定します。 この 4 部構成の名前は、linked_server_name.catalog.schema. という形式にする必要があります。object_name

注意

リンク サーバーは、どのサーバーで定義されたかを示す (ループ バックする) ように定義することができます。 ループバック サーバーは、単一のサーバー ネットワークで分散クエリを使用するアプリケーションをテストする際に最も有効です。 ループバック リンク サーバーはテスト用であり、分散トランザクションなどの多くの操作ではサポートされていません。

リンク サーバーの作成 (SQL Server データベース エンジン)

sp_addlinkedserver (Transact-SQL)

sp_addlinkedsrvlogin (Transact-SQL)

sp_dropserver (Transact-SQL)

sys.servers (Transact-SQL)

sp_linkedservers (Transact-SQL)