クラスタ化された SQL Server でのリンク サーバーの考慮事項
SQL Server 2005 に同梱されていない OLE DB プロバイダに対するリンク サーバーをクラスタ化された SQL Server 内に構成するときは、その OLE DB プロバイダがクラスタのすべてのノードにインストールされていることを確認してください。また、リンク サーバーを定義するプロパティはすべて、場所の透過性が必要です。これらのプロパティには、SQL Server がクラスタの特定ノードで常時動作していることを想定した情報を含めないようにします。
次の例では、SQL Server を実行するサーバーに対してリンク サーバーを定義し、SELECT
ステートメントの中で 4 つの要素で構成される名前を使用してリモート テーブルの 1 つを参照します。
sp_addlinkedserver @server = N'LinkServer',
@srvproduct = N' ',
@provider = N'SQLNCLI',
@datasrc = N'ServerNetName',
@catalog = N'AdventureWorks'
GO
SELECT *
FROM LinkServer.AdventureWorks.HumanResources.Employee
GO
ループバック リンク サーバー
リンク サーバーは、どのサーバーで定義されたかを示す (ループ バックする) ように定義することができます。ループバック サーバーは、単一のサーバー ネットワークで分散クエリを使用するアプリケーションをテストする際に最も有効です。
たとえば、MyServer
という名前のサーバーで次の sp_addlinkedserver
ストアド プロシージャを実行すると、ループバック リンク サーバーが定義されます。
sp_addlinkedserver @server = N'MyLink',
@srvproduct = N' ',
@provider = N'SQLNCLI',
@datasrc = N'MyServer',
@catalog = N'AdventureWorks'
GO
MyLink
をサーバー名として使用した Transact-SQL ステートメントは、SQLNCLI
プロバイダを経由してローカル サーバーに戻ります。
ループバック リンク サーバーは分散トランザクション内では使用することができません。分散トランザクション内でループバック リンク サーバーに対して分散クエリを実行すると、エラーが発生します。たとえば、エラー 3910: "[Microsoft][ODBC SQL Server Driver][SQL Server] トランザクション コンテキストを他のセッションが使用中です。" というエラーが返されます。
参照
概念
SQL Native Client OLE DB プロバイダ
分散クエリ
その他の技術情報
sp_addlinkedserver (Transact-SQL)