sp_addlinkedsrvlogin (Transact-SQL)
更新 : 2005 年 12 月 5 日
SQL Server のローカル インスタンスのログインと、リモート サーバーのセキュリティ アカウントの間のマッピングを作成または更新します。
構文
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 を使用して、指定した locallogin の rmtsrvname に接続することを示します。rmtuser と rmtpassword がいずれも 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 がログインの代理でリンク サーバーに接続するときに、ローカル ログインのユーザー資格情報が使用されます。これは、リンクサーバーの @useself を TRUE に設定して、ローカル ユーザー名を指定せずに sp_addlinkedsrvlogin を実行する場合と同じです。既定のマッピングを変更するときや、特定のローカル ログインに対応する新しいマッピングを追加するときだけ sp_addlinkedsrvlogin を使用します。既定のマッピングまたはその他のマッピングを削除するには、sp_droplinkedsrvlogin を使用します。
次のすべての条件が成立する場合、SQL Server は、sp_addlinkedsrvlogin を使用してあらかじめ決められたログイン マッピングを作成する代わりに、クエリを実行するユーザーの Windows セキュリティ資格情報 (Windows のログイン名とパスワード) を自動的に使用して、リンク サーバーに接続できます。
- ユーザーが Windows 認証モードを使用して SQL Server に接続している。
- クライアントと送信側サーバーで、セキュリティ アカウント委任が利用可能になっている。
- たとえば Windows 上で実行されている SQL Server のように、プロバイダが Windows 認証モードをサポートしている。
メモ : |
---|
委任は、単一ホップのシナリオでは有効にする必要はありませんが、複数ホップのシナリオでは有効にする必要があります。 |
SQL Server のローカル インスタンス上で sp_addlinkedsrvlogin を実行して定義されたマッピングを、リンク サーバーが使用して認証を行った後は、ローカル サーバーではなく、リンク サーバーがリモート データベース内の個々のオブジェクトに対する権限を規定します。
ユーザー定義のトランザクション内から sp_addlinkedsrvlogin を実行することはできません。
権限
サーバーに対する ALTER ANY LOGIN 権限が必要です。
戻り値
0 (成功) または 1 (失敗)
例
A. ログイン自身のユーザー資格情報を使用してすべてのローカル ログインをリンク サーバーに接続する
次の例では、ローカル サーバーへのすべてのログインが、ログイン自身のユーザー資格情報を使用して、リンク サーバー Accounts
に接続できるように、マッピングを作成します。
EXEC sp_addlinkedsrvlogin 'Accounts'
または
EXEC sp_addlinkedsrvlogin 'Accounts', 'true'
メモ : |
---|
個々のログイン用に作成された明示的なマッピングがある場合、それらのマッピングは、リンク サーバーに存在する可能性のあるどのグローバル マッピングよりも優先されます。 |
B. 別のユーザー資格情報を使用して特定のログインをリンク サーバーに接続する
次の例では、Windows ユーザー Domain\Mary
がログイン MaryP
とパスワード d89q3w4u
を使用してリンク サーバー Accounts
に接続できるように、マッピングを作成します。
EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'd89q3w4u'
セキュリティ メモ : |
---|
この例では、Windows 認証は使用されていません。したがって、パスワードは暗号化されずに送信されます。パスワードは、ディスク、バックアップ、およびログファイルに保存されたデータ ソース定義やスクリプトで参照できます。この種類の接続では、システム管理者のパスワードを使用しないでください。特定のユーザー環境のセキュリティについては、ネットワーク管理者に相談してください。 |
参照
関連項目
分散クエリのストアド プロシージャ (Transact-SQL)
リンク サーバーのカタログ ビュー (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
その他の技術情報
リンク サーバーの委任用の構成
リンク サーバーのセキュリティ