リンク サーバーの委任用の構成

SQL Server と Windows の構成で、認証済みの Windows ユーザーの資格情報を転送することにより、ある SQL Server インスタンスに接続されたクライアントを別の SQL Server インスタンスに接続できるように指定することができます。このような処理は、委任と呼ばれます。委任では、ある Windows ユーザーが Windows 認証を使用して接続している SQL Server のインスタンスから別のインスタンスと通信する際に、そのユーザーの権限が借用されます。特定のリンク サーバーに対する特定のログインに自己マッピングを使用する場合、分散クエリにはセキュリティ アカウントの委任が必要になります。

委任の要件

委任の要件を理解するために、SQL Server のインスタンス SQLSERVER1 を実行しているサーバーに接続するクライアント コンピューターに、あるユーザーがログオンする、というシナリオを考えてみます。そのユーザーは、リンク サーバー SQLSERVER2 上で特定のデータベースに対して分散クエリを実行します。あるコンピューターを別のコンピューターに接続することで 3 番目のコンピューターに接続するこのシナリオは、ダブル ホップと呼ばれます。

注意

サーバーに接続する SQL Server Management Studio などのクライアント アプリケーションが、クエリ対象の SQL Server インスタンスと同じコンピューター上で実行されている場合でも、リンク サーバーは委任用に構成する必要があります。

クライアントの要件

  • ユーザーの Windows 認証済みログインには、SQLSERVER1SQLSERVER2 へのアクセス権が必要です。 

  • ユーザーの Active Directory プロパティ [アカウントは重要なので委任できない] チェック ボックスはオフにしておいてください。

  • クライアント コンピューターで TCP/IP ネットワーク接続または名前付きパイプ ネットワーク接続を使用している必要があります。

1 番目/中間サーバー (SQLSERVER1) の要件

  • サーバーには、ドメイン管理者によって登録された SPN が必要です。

  • SQL Server を実行しているアカウントは、委任について信頼されている必要があります。

  • サーバーで TCP/IP ネットワーク接続または名前付きパイプ ネットワーク接続を使用している必要があります。

  • 2 番目のサーバー SQLSERVER2 はリンク サーバーとして追加する必要があります。この操作を行うには、sp_addlinkedserver ストアド プロシージャを実行します。次に例を示します。

    EXEC sp_addlinkedserver 'SQLSERVER2', N'SQL Server'
    
    EXEC sp_addlinkedserver 'SQLSERVER2', N'SQL Server'
    
  • リンク サーバーのログインを自己マッピング用に構成しておく必要があります。この操作を行うには、sp_addlinkedsrvlogin ストアド プロシージャを実行します。次に例を示します。

    EXEC sp_addlinkedsrvlogin 'SQLSERVER2', 'true'
    
    EXEC sp_addlinkedsrvlogin 'SQLSERVER2', 'true'
    

2 番目のサーバー (SQLSERVER2) の要件

  • TCP/IP ネットワーク接続を使用する場合、サーバーにはドメイン管理者によって登録された SPN が必要です。

  • サーバーで TCP/IP ネットワーク接続または名前付きパイプ ネットワーク接続を使用している必要があります。