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) を使用して接続のセキュリティ コンテキストを指定する必要があります。 一部の OLE DB プロバイダーでは、SQL Server で 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。
注
リンク サーバーは、定義されているサーバーをポイントバック (ループ バック) するように定義できます。 ループバック サーバーは、1 つのサーバー ネットワークで分散クエリを使用するアプリケーションをテストする場合に最も役立ちます。 ループバック リンク サーバーはテストを目的としており、分散トランザクションなどの多くの操作ではサポートされていません。
関連タスク
リンク サーバーの作成 (SQL Server データベース エンジン)
sp_addlinkedserver (Transact-SQL)
sp_addlinkedsrvlogin (Transact-SQL)