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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel 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-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

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

АргументыArguments

[ @rmtsrvname = ] 'rmtsrvname'
Имя связанного сервера, к которому применяется сопоставление имен входа.Is the name of a linked server that the login mapping applies to. рмтсрвнаме имеет тип sysnameи не имеет значения по умолчанию.rmtsrvname is sysname, with no default.

[ @useself = ] { 'TRUE' | 'FALSE' | NULL }'
Определяет, следует ли подключаться к рмтсрвнаме , олицетворяя локальные имена входа или явно отправляя имя входа и пароль.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 указывает, что имена входа используют собственные учетные данные для подключения к рмтсрвнамес пропущенными аргументами рмтусер и рмтпассворд .A value of TRUE specifies that logins use their own credentials to connect to rmtsrvname, with the rmtuser and rmtpassword arguments being ignored. Значение FALSE указывает, что аргументы рмтусер и рмтпассворд используются для подключения к рмтсрвнаме для указанного локаллогин.FALSE specifies that the rmtuser and rmtpassword arguments are used to connect to rmtsrvname for the specified locallogin. Если для рмтусер и рмтпассворд также задано значение 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. локаллогин имеет тип sysnameи значение по умолчанию NULL.locallogin is sysname, with a default of NULL. Значение NULL указывает, что эта запись применяется ко всем локальным именам входа, подключающимся к рмтсрвнаме.NULL specifies that this entry applies to all local logins that connect to rmtsrvname. Если значение не равно NULL, локаллогин может 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'
Удаленное имя входа, используемое для ** подключения к @useself рмтсрвнаме, если имеет значение false.Is the remote login used to connect to rmtsrvname when @useself is FALSE. Если удаленный сервер является экземпляром SQL ServerSQL Server , который не использует проверку подлинности Windows, рмтусер является 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. рмтусер имеет тип sysnameи значение по умолчанию NULL.rmtuser is sysname, with a default of NULL.

[ @rmtpassword = ] 'rmtpassword'
Пароль, связанный с рмтусер.Is the password associated with rmtuser. рмтпассворд имеет тип sysnameи значение по умолчанию NULL.rmtpassword is sysname, with a default of NULL.

Значения кода возвратаReturn Code Values

0 (успех) или 1 (сбой).0 (success) or 1 (failure)

RemarksRemarks

Когда пользователь входит на локальный сервер и выполняет распределенный запрос, который обращается к таблице на связанном сервере, то для открытия таблицы локальный сервер должен войти на связанный сервер под именем данного пользователя.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 c пакетом обновления 1 (SP1) изменяет разрешения для получения статистики и позволяет пользователям, имеющим разрешение SELECT, получать доступ к имеющейся статистике c помощью команды 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.

Вместо того чтобы создавать предопределенные сопоставления входных имен с помощью процедуры sp_addlinkedsrvlogin, SQL ServerSQL Server может для подключения к связанному серверу автоматически использовать учетные данные безопасности 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 Server в режиме проверки подлинности WindowsA 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, работающий в WindowsThe 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.

После завершения проверки подлинности связанным сервером (с помощью сопоставлений, заданных процедурой sp_addlinkedsrvlogin в локальном экземпляре SQL ServerSQL Server) разрешения на отдельные объекты в удаленной базе данных определяются связанным сервером, а не локальным.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.

РазрешенияPermissions

Необходимо разрешение ALTER ANY LOGIN на сервере.Requires ALTER ANY LOGIN permission on the server.

ПримерыExamples

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';  

илиOr

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. Подключение указанного имени входа к связанному серверу с помощью других учетных данных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-SQLSystem Stored Procedures (Transact-SQL)