sp_addlinkedsrvlogin (TRANSACT-SQL)sp_addlinkedsrvlogin (Transact-SQL)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

作成または更新のローカル インスタンス上のログインの間のマッピングSQL ServerSQL Serverとリモート サーバー上のセキュリティ アカウント。Creates or updates a mapping between a login on the local instance of SQL ServerSQL Server and a security account on a remote server.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions


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


[ @rmtsrvname = ] 'rmtsrvname'
ログイン マッピングを適用するリンク サーバーの名前です。Is the name of a linked server that the login mapping applies to. rmtsrvnamesysname、既定値はありません。rmtsrvname is sysname, with no default.

[ @useself = ] { 'TRUE' | 'FALSE' | NULL }'
接続するかどうかを判断しますrmtsrvnameローカル ログインの権限を借用または明示的にログインとパスワードを送信します。Determines whether to connect to rmtsrvname by impersonating local logins or explicitly submitting a login and password. データ型はvarchar ( 8 ) 、既定値は TRUE。The data type is varchar( 8 ), with a default of TRUE.

TRUE の値は、ログインがへの接続に自身の資格情報を使用することを指定しますrmtsrvnameで、 rmtuserrmtpassword引数は無視されます。A value of TRUE specifies that logins use their own credentials to connect to rmtsrvname, with the rmtuser and rmtpassword arguments being ignored. FALSE を指定する、 rmtuserrmtpassword引数がへの接続に使用されるrmtsrvname 、指定されたlocallogin.FALSE specifies that the rmtuser and rmtpassword arguments are used to connect to rmtsrvname for the specified locallogin. 場合rmtuserrmtpasswordも NULL でないログインまたはパスワードに設定を使用して、リンク サーバーに接続します。If rmtuser and rmtpassword are also set to NULL, no login or password is used to connect to the linked server.

[ @locallogin = ] 'locallogin'
ローカル サーバー上のログインです。Is a login on the local server. localloginsysname、既定値は NULL です。locallogin is sysname, with a default of NULL. NULL では、このエントリに接続するすべてのローカル ログインに適用されることを示すrmtsrvnameします。NULL specifies that this entry applies to all local logins that connect to rmtsrvname. NULL 以外の場合localloginできます、SQL ServerSQL Serverログインまたは Windows ログインします。If not NULL, locallogin can be a SQL ServerSQL Server login or a Windows login. Windows ログインが与えられているへのアクセスSQL ServerSQL Serverいずれかを直接または Windows グループのメンバーシップを介してアクセスを許可します。The Windows login must have been granted access to SQL ServerSQL Server either directly, or through its membership in a Windows group granted access.

[ @rmtuser = ] 'rmtuser'
接続するために使用するリモート ログインrmtsrvnameとき@useselfは FALSE です。Is the remote login used to connect to rmtsrvname when @useself is FALSE. インスタンスがリモート サーバーの場合SQL ServerSQL Server、Windows 認証を使用しないrmtuserは、SQL ServerSQL Serverログインします。When the remote server is an instance of SQL ServerSQL Server that does not use Windows Authentication, rmtuser is a SQL ServerSQL Server login. rmtusersysname、既定値は NULL です。rmtuser is sysname, with a default of NULL.

[ @rmtpassword = ] 'rmtpassword'
パスワードに関連付けられているrmtuserします。Is the password associated with rmtuser. rmtpasswordsysname、既定値は NULL です。rmtpassword is sysname, with a default of NULL.

リターン コードの値Return Code Values

0 (成功) または 1 (失敗)0 (success) or 1 (failure)


ユーザーは、ローカル サーバーにログオンし、リンク サーバー上のテーブルにアクセスする分散クエリを実行、すると、ローカル サーバーはそのテーブルにアクセスするユーザーの代理として、リンク サーバーにログオンする必要があります。When a user logs on to the local server and executes a distributed query that accesses a table on the linked server, the local server must log on to the linked server on behalf of the user to access that table. sp_addlinkedsrvlogin を使用して、ローカル サーバーがリンク サーバーへのログインに使用するログイン資格情報を指定します。Use sp_addlinkedsrvlogin to specify the login credentials that the local server uses to log on to the linked server.


リンク サーバーでテーブルを使用している場合は、最適なクエリ プランを作成するには、リンク サーバーのデータの分布統計情報がクエリ プロセッサに必要です。To create the best query plans when you are using a table on a linked server, the query processor must have data distribution statistics from the linked server. ユーザー テーブルの列に対するアクセス許可が制限されている便利なすべての統計を取得する可能性があります効率の悪いクエリ プランを受信し、パフォーマンスが低下のための十分な権限がありません。Users that have limited permissions on any columns of the table might not have sufficient permissions to obtain all the useful statistics, and might receive a less efficient query plan and experience poor performance. リンク サーバーが SQL ServerSQL Server のインスタンスである場合、利用可能な統計情報をすべて取得するには、ユーザーがテーブルを所有しているか、リンク サーバーの固定サーバー ロール sysadmin、固定データベース ロール db_owner、または固定データベース ロール db_ddladmin のメンバーである必要があります。If the linked server is an instance of SQL ServerSQL Server, to obtain all available statistics, the user must own the table or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role on the linked server. SQL Server 2012 SP1 では、統計を取得するための権限の制限が変更され、SELECT 権限を持つユーザーは DBCC SHOW_STATISTICS で入手可能な統計にアクセスできます。SQL Server 2012 SP1 modifies the permission restrictions for obtaining statistics and allows users with SELECT permission to access statistics available through DBCC SHOW_STATISTICS. 詳細については、アクセス許可のセクションを参照してください。 DBCC SHOW_STATISTICS (TRANSACT-SQL)します。For more information, see the Permissions section of DBCC SHOW_STATISTICS (Transact-SQL).

すべてのローカル サーバー上のログインとリンク サーバー上のリモート ログインの既定のマッピングは、sp_addlinkedserver を実行することによって自動的に作成されます。A default mapping between all logins on the local server and remote logins on the linked server is automatically created by executing sp_addlinkedserver. 既定のマッピングでは、ことを示すSQL ServerSQL Serverログインの代わりに、リンク サーバーに接続するときに、ローカル ログインのユーザーの資格情報を使用します。The default mapping states that SQL ServerSQL Server uses the user credentials of the local login when connecting to the linked server on behalf of the login. Sp_addlinkedsrvlogin を実行するのと同じ@useself設定 true ローカル ユーザー名を指定せず、リンク サーバー。This is equivalent to executing sp_addlinkedsrvlogin with @useself set to true for the linked server, without specifying a local user name. 既定のマッピングを変更するときや、特定のローカル ログインに対応する新しいマッピングを追加するときだけ sp_addlinkedsrvlogin を使用します。Use sp_addlinkedsrvlogin only to change the default mapping or to add new mappings for specific local logins. 既定のマッピングまたはその他のマッピングを削除するには、sp_droplinkedsrvlogin を使用します。To delete the default mapping or any other mapping, use sp_droplinkedsrvlogin.

次のすべての条件が成立する場合、SQL ServerSQL Server は、sp_addlinkedsrvlogin を使用してあらかじめ決められたログイン マッピングを作成する代わりに、クエリを実行するユーザーの Windows セキュリティ資格情報 (Windows のログイン名とパスワード) を自動的に使用して、リンク サーバーに接続できます。Instead of having to use sp_addlinkedsrvlogin to create a predetermined login mapping, SQL ServerSQL Server can automatically use the Windows security credentials (Windows login name and password) of a user issuing the query to connect to a linked server when all the following conditions exist:

  • ユーザーが接続されているSQL ServerSQL ServerWindows 認証モードを使用しています。A user is connected to SQL ServerSQL Server by using Windows Authentication Mode.

  • セキュリティ アカウントの委任は、クライアントと送信側サーバーで使用できます。Security account delegation is available on the client and sending server.

  • たとえば Windows 上で実行されている SQL ServerSQL Server のように、プロバイダーが Windows 認証モードをサポートしている。The provider supports Windows Authentication Mode; for example, SQL ServerSQL Server running on Windows.


委任がシングル ホップのシナリオで有効にする必要はありませんが、複数のホップ シナリオの必須。Delegation does not have to be enabled for single-hop scenarios, but it is required for multiple-hop scenarios.

SQL ServerSQL Server のローカル インスタンス上で sp_addlinkedsrvlogin を実行して定義されたマッピングを、リンク サーバーが使用して認証を行った後は、ローカル サーバーではなく、リンク サーバーがリモート データベース内の個々のオブジェクトに対する権限を規定します。After the authentication has been performed by the linked server by using the mappings that are defined by executing sp_addlinkedsrvlogin on the local instance of SQL ServerSQL Server, the permissions on individual objects in the remote database are determined by the linked server, not the local server.

ユーザー定義のトランザクション内から sp_addlinkedsrvlogin を実行することはできません。sp_addlinkedsrvlogin cannot be executed from within a user-defined transaction.


サーバーに対する ALTER ANY LOGIN 権限が必要です。Requires ALTER ANY LOGIN permission on the server.


A.A. 自分のユーザー資格情報を使用してすべてのローカル ログインをリンク サーバーに接続Connecting all local logins to the linked server by using their own user credentials

次の例では、ローカル サーバーにすべてのログインをリンク サーバーに接続を確認するマッピングを作成するAccounts自身のユーザー資格情報を使用しています。The following example creates a mapping to make sure that all logins to the local server connect through to the linked server Accounts by using their own user credentials.

EXEC sp_addlinkedsrvlogin 'Accounts';  


EXEC sp_addlinkedsrvlogin 'Accounts', 'true';  


個別のログイン用に作成された明示的なマッピングがある場合よりも優先どのグローバル マッピングが存在するリンク サーバーにします。If there are explicit mappings created for individual logins, they take precedence over any global mappings that may exist for that linked server.

B.B. 特定のログインをリンク サーバーに別のユーザーの資格情報を使用して接続します。Connecting a specific login to the linked server by using different user credentials

次の例では、ことを確認するマッピングを作成する Windows ユーザーDomain\Maryをリンク サーバー経由で接続Accounts、ログインを使用してMaryPとパスワードd89q3w4uします。The following example creates a mapping to make sure that the Windows user Domain\Mary connects through to the linked server Accounts by using the login MaryP and password d89q3w4u.

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


この例では、Windows 認証は使用しません。This example does not use Windows Authentication. 暗号化されていないパスワードが送信されます。Passwords will be transmitted unencrypted. パスワードは、ディスク、バックアップ、およびログファイルに保存されたデータ ソース定義やスクリプトで参照できます。Passwords may be visible in data source definitions and scripts that are saved to disk, in backups, and in log files. この種類の接続では、システム管理者のパスワードを使用しないでください。Never use an administrator password in this kind of connection. セキュリティのガイダンスについては、環境に合わせたネットワーク管理者に問い合わせてください。Consult your network administrator for security guidance specific to your environment.

関連項目See Also

リンク サーバーのカタログ ビュー (TRANSACT-SQL) Linked Servers Catalog Views (Transact-SQL)
sp_addlinkedserver (Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (TRANSACT-SQL) sp_droplinkedsrvlogin (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)System Stored Procedures (Transact-SQL)