sp_addlinkedsrvlogin (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン)

のローカル インスタンス上のログインとリモート サーバー上のセキュリティ アカウントとの間のマッピング 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 は、指定された localloginrmtsrvname に接続するために rmtuser 引数と rmtpassword 引数を使用します。 rmtuser と rmtpassword も NULL に設定されている場合、リンク サーバーへの接続にログインまたはパスワードは使用されません。

[ @locallogin = ] 'locallogin'
ローカル サーバー上のログインです。 locallogin は sysname で、 既定値は NULL です。 NULL は、このエントリが rmtsrvname に接続するローカル ログインに適用されます。 NULL 以外の場合 、locallogin は ログインまたはWindows SQL Server できます。 ログインWindows直接、またはアクセスを許可されたグループのメンバーシップを通じて、Windows SQL Server 許可されている必要があります。

[ @rmtuser = ] 'rmtuser'
が FALSE の場合に rmtsrvname への接続に使用される @useself リモート ログインです。 リモート サーバーが認証を使用しない のインスタンスである場合 SQL Server Windows、rmtuser はログイン SQL Server です。 rmtuser は sysname で、 既定値は NULL です。

[ @rmtpassword = ] 'rmtpassword'
rmtuser に関連付 けられているパスワードですrmtpassword は sysname で、 既定値は NULL です。

リターン コードの値

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

解説

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

注意

リンク サーバーでテーブルを使用する場合に最適なクエリ プランを作成するには、クエリ プロセッサにリンク サーバーからのデータ分散統計が必要です。 テーブルの列に対するアクセス許可が制限されているユーザーは、役に立つすべての統計を取得するための十分なアクセス許可を持たなかったり、より効率的なクエリ プランを受け取り、パフォーマンスが低下する可能性があります。 リンク サーバーが SQL Server のインスタンスである場合、利用可能な統計情報をすべて取得するには、ユーザーがテーブルを所有しているか、リンク サーバーの固定サーバー ロール sysadmin、固定データベース ロール db_owner、または固定データベース ロール db_ddladmin のメンバーである必要があります。 SQL Server 2012 SP1 では、統計を取得するための権限の制限が変更され、SELECT 権限を持つユーザーは DBCC SHOW_STATISTICS で入手可能な統計にアクセスできます。 詳細については、「DBCC SHOW_STATISTICS (Transact-SQL)」を参照してください

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

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

  • ユーザーは、認証モード SQL Server を使用して Windows接続されます。

  • セキュリティ アカウントの委任は、クライアントと送信サーバーで使用できます。

  • たとえば Windows 上で実行されている SQL Server のように、プロバイダーが Windows 認証モードをサポートしている。

注意

シングルホップ シナリオでは委任を有効にする必要はありません。ただし、複数ホップのシナリオでは必須です。

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

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

アクセス許可

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

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

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

EXEC sp_addlinkedsrvlogin 'Accounts';  

または

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';  

注意

個々のログインに対して明示的なマッピングが作成されている場合、そのリンク サーバーに存在する可能性があるグローバル マッピングよりも優先されます。

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

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

EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'd89q3w4u';  

重要

この例では、認証をWindowsではありません。 パスワードは暗号化されていない状態で送信されます。 パスワードは、ディスク、バックアップ、およびログファイルに保存されたデータ ソース定義やスクリプトで参照できます。 この種類の接続では、システム管理者のパスワードを使用しないでください。 環境に固有のセキュリティ ガイダンスについては、ネットワーク管理者に問い合わせてください。

参照

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