Share via


クラスタ化された 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)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手