sp_addlinkedsrvlogin (Transact-SQL)

更新 : 2005 年 12 月 5 日

SQL Server のローカル インスタンスのログインと、リモート サーバーのセキュリティ アカウントの間のマッピングを作成または更新します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' 
     [ , [ @useself = ] 'TRUE' | 'FALSE' | 'NULL'] 
     [ , [ @locallogin = ] 'locallogin' ] 
     [ , [ @rmtuser = ] 'rmtuser' ] 
     [ , [ @rmtpassword = ] 'rmtpassword' ] 

引数

  • [ @rmtsrvname=] 'rmtsrvname'
    ログイン マッピングの対象となるリンク サーバーの名前を指定します。rmtsrvname のデータ型は sysname で、既定値はありません。
  • [ @useself = ] 'TRUE' | 'FALSE' | 'NULL'
    rmtsrvname への接続で、ローカル ログインを借用するか、または明示的にログインとパスワードを送信するかを指定します。データ型は varchar(8) で、既定値は TRUE です。

    値 TRUE は、ログイン自身の資格情報を使用して rmtsrvname に接続し、引数 rmtuser および rmtpassword を無視することを示します。FALSE は、引数 rmtuser および rmtpassword を使用して、指定した localloginrmtsrvname に接続することを示します。rmtuserrmtpassword がいずれも NULL に設定されている場合、リンク サーバーへの接続時にはログインとパスワードのどちらも使用されません。

  • [ @locallogin=] 'locallogin'
    ローカル サーバー上のログインを指定します。locallogin のデータ型は sysname で、既定値は NULL です。NULL は、このエントリが rmtsrvname に接続するすべてのローカル ログインに適用されることを示します。NULL 以外を指定した場合、locallogin は SQL Server ログインまたは Windows ログインのどちらかになります。Windows ログインには、直接またはアクセス権を与えられている Windows グループのメンバシップを介して、SQL Server へのアクセス権が許可されている必要があります。
  • [ @rmtuser = ] 'rmtuser'
    @useself が FALSE の場合に、rmtsrvname への接続に使用するリモート ログインを指定します。リモート サーバーが Windows 認証を使用しない SQL Server インスタンスの場合、rmtuser は SQL Server ログインです。rmtuser のデータ型は sysname で、既定値は NULL です。
  • [ @rmtpassword = ] 'rmtpassword'
    rmtuser に関連付けられているパスワードを指定します。rmtpassword のデータ型は sysname で、既定値は NULL です。

解説

ユーザーがローカル サーバーにログインして、リンク サーバー上のテーブルにアクセスする分散クエリを実行する場合、ローカル サーバーは、目的のテーブルにアクセスするために、ユーザーの代理でリンク サーバーにログインする必要があります。sp_addlinkedsrvlogin を使用して、ローカル サーバーがリンク サーバーへのログインに使用するログイン資格情報を指定します。

sp_addlinkedserver を実行することにより、ローカル サーバー上のすべてのログインとリンク サーバー上のリモート ログインとの間の既定のマッピングが自動的に作成されます。既定のマッピングでは、SQL Server がログインの代理でリンク サーバーに接続するときに、ローカル ログインのユーザー資格情報が使用されます。これは、リンクサーバーの @useselfTRUE に設定して、ローカル ユーザー名を指定せずに sp_addlinkedsrvlogin を実行する場合と同じです。既定のマッピングを変更するときや、特定のローカル ログインに対応する新しいマッピングを追加するときだけ sp_addlinkedsrvlogin を使用します。既定のマッピングまたはその他のマッピングを削除するには、sp_droplinkedsrvlogin を使用します。

次のすべての条件が成立する場合、SQL Server は、sp_addlinkedsrvlogin を使用してあらかじめ決められたログイン マッピングを作成する代わりに、クエリを実行するユーザーの Windows セキュリティ資格情報 (Windows のログイン名とパスワード) を自動的に使用して、リンク サーバーに接続できます。

  • ユーザーが Windows 認証モードを使用して SQL Server に接続している。
  • クライアントと送信側サーバーで、セキュリティ アカウント委任が利用可能になっている。
  • たとえば Windows 上で実行されている SQL Server のように、プロバイダが Windows 認証モードをサポートしている。
ms189811.note(ja-jp,SQL.90).gifメモ :
委任は、単一ホップのシナリオでは有効にする必要はありませんが、複数ホップのシナリオでは有効にする必要があります。

SQL Server のローカル インスタンス上で sp_addlinkedsrvlogin を実行して定義されたマッピングを、リンク サーバーが使用して認証を行った後は、ローカル サーバーではなく、リンク サーバーがリモート データベース内の個々のオブジェクトに対する権限を規定します。

ユーザー定義のトランザクション内から sp_addlinkedsrvlogin を実行することはできません。

権限

サーバーに対する ALTER ANY LOGIN 権限が必要です。

戻り値

0 (成功) または 1 (失敗)

A. ログイン自身のユーザー資格情報を使用してすべてのローカル ログインをリンク サーバーに接続する

次の例では、ローカル サーバーへのすべてのログインが、ログイン自身のユーザー資格情報を使用して、リンク サーバー Accounts に接続できるように、マッピングを作成します。

EXEC sp_addlinkedsrvlogin 'Accounts'

または

EXEC sp_addlinkedsrvlogin 'Accounts', 'true'
ms189811.note(ja-jp,SQL.90).gifメモ :
個々のログイン用に作成された明示的なマッピングがある場合、それらのマッピングは、リンク サーバーに存在する可能性のあるどのグローバル マッピングよりも優先されます。

B. 別のユーザー資格情報を使用して特定のログインをリンク サーバーに接続する

次の例では、Windows ユーザー Domain\Mary がログイン MaryP とパスワード d89q3w4u を使用してリンク サーバー Accounts に接続できるように、マッピングを作成します。

EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'd89q3w4u'
ms189811.security(ja-jp,SQL.90).gifセキュリティ メモ :
この例では、Windows 認証は使用されていません。したがって、パスワードは暗号化されずに送信されます。パスワードは、ディスク、バックアップ、およびログファイルに保存されたデータ ソース定義やスクリプトで参照できます。この種類の接続では、システム管理者のパスワードを使用しないでください。特定のユーザー環境のセキュリティについては、ネットワーク管理者に相談してください。

参照

関連項目

分散クエリのストアド プロシージャ (Transact-SQL)
リンク サーバーのカタログ ビュー (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)

その他の技術情報

リンク サーバーの委任用の構成
リンク サーバーのセキュリティ

ヘルプおよび情報

SQL Server 2005 の参考資料の入手