サーバーのリンク

リンク サーバーを構成すると、SQL Server はリモート サーバー上の OLE DB データ ソースに対してコマンドを実行できます。リンク サーバーには次の利点があります。

  • リモート サーバーにアクセスできる。

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

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

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

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

  • OLE DB プロバイダ

  • OLE DB データ ソース

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

MicrosoftSQL Server Native Client OLE DB プロバイダ (PROGID: SQLNCLI10) は、SQL Server の公式の OLE DB プロバイダです。

注意注意

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

リンク サーバーの詳細

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

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

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

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

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

プロバイダの管理

SQL Server が OLE DB プロバイダを読み込んで使用する方法を制御する一連のオプションは、レジストリで指定されます。詳細については、「分散クエリ用の 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 という形式にする必要があります。詳細については、「分散クエリ」を参照してください。