sp_addlinkedsrvlogin (Transact-SQL)

Применимо к: SQL Server (все поддерживаемые версии)

Создает или обновляет сопоставление между именем входа в локальном экземпляре SQL Server и учетной записью безопасности на удаленном сервере.

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

[ @rmtsrvname = ] 'rmtsrvname'
Имя связанного сервера, к которому применяется сопоставление имен входа. rmtsrvnamesysname без значения по умолчанию.

[ @useself = ] { 'TRUE' | 'FALSE' | NULL }'
Определяет, следует ли подключаться к rmtsrvname путем олицетворения локальных имен входа или явной отправки имени входа и пароля. Тип данных — varchar(8) с значением TRUE по умолчанию.

Значение TRUE указывает, что имена входа используют собственные учетные данные для подключения к rmtsrvname, при этом аргументы rmtuser и rmtpassword игнорируются. FALSE указывает, что аргументы rmtuser и rmtpassword используются для подключения к rmtsrvname для указанного locallogin. Если для rmtuser и rmtpassword также задано значение NULL, для подключения к связанному серверу не используется имя входа или пароль.

[ @locallogin = ] 'locallogin'
Имя входа на локальный сервер. localloginsysname с значением NULL по умолчанию. Null указывает, что эта запись применяется ко всем локальным именам входа, которые подключаются к rmtsrvname. Если значение не равно NULL, locallogin может быть именем входа SQL Server или именем входа Windows. Для входа Windows должен быть предоставлен доступ к SQL Server напрямую или через членство в группе Windows, которым предоставлен доступ.

[ @rmtuser = ] 'rmtuser'
Удаленное имя входа, используемое для подключения к rmtsrvname при @useself значении FALSE. Если удаленный сервер является экземпляром SQL Server, который не использует проверку подлинности Windows, rmtuser является SQL Server имени входа. rmtusersysname с значением NULL по умолчанию.

[ @rmtpassword = ] 'rmtpassword'
Пароль, связанный с rmtuser. rmtpasswordsysname с значением NULL по умолчанию.

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

0 (успешное завершение) или 1 (неуспешное завершение)

Remarks

Когда пользователь входит на локальный сервер и выполняет распределенный запрос, который обращается к таблице на связанном сервере, то для открытия таблицы локальный сервер должен войти на связанный сервер под именем данного пользователя. Учетные данные входа, с помощью которых локальный сервер будет входить на связанный сервер, задаются с помощью хранимой процедуры sp_addlinkedsrvlogin.

Примечание

Чтобы создать наиболее эффективный план запроса при использовании таблицы на связанном сервере, обработчик запроса должен иметь статистику распределения данных со связанного сервера. Пользователи, имеющие ограниченные разрешения для работы со столбцами таблицы, могут не иметь возможности получить необходимую статистику и, как следствие, получат менее эффективный план запроса. Если связанный сервер является экземпляром SQL Server, чтобы получить всю доступную статистику, пользователь должен владеть таблицей или быть членом предопределенных ролей сервера sysadmin, db_owner предопределенных ролей базы данных или db_ddladmin предопределенных ролей базы данных на связанном сервере. SQL Server 2012 c пакетом обновления 1 (SP1) изменяет разрешения для получения статистики и позволяет пользователям, имеющим разрешение SELECT, получать доступ к имеющейся статистике c помощью команды DBCC SHOW_STATISTICS. Дополнительные сведения см. в разделе "Разрешения" SHOW_STATISTICS DBCC (Transact-SQL).

Сопоставление по умолчанию всех имен входа на локальном сервере с удаленными именами входа на связанном сервере создается автоматически при выполнении процедуры sp_addlinkedserver. Сопоставление по умолчанию указывает, что SQL Server использует учетные данные пользователя локального имени входа при подключении к связанному серверу от имени входа. Это эквивалентно выполнению sp_addlinkedsrvlogin с @useself установленным значением true для связанного сервера без указания имени локального пользователя. С помощью процедуры sp_addlinkedsrvlogin следует только изменять сопоставления по умолчанию или добавлять новые сопоставления для определенных локальных имен входа. Сопоставление по умолчанию или любое другое сопоставление удаляется с помощью процедуры sp_droplinkedsrvlogin.

Вместо того, чтобы использовать sp_addlinkedsrvlogin для создания предопределенного сопоставления входа, SQL Server может автоматически использовать учетные данные безопасности Windows (имя входа Windows и пароль) пользователя, отправляющего запрос для подключения к связанному серверу, если существуют все следующие условия:

  • Пользователь подключен к SQL Server с помощью режима проверки подлинности Windows.

  • Делегирование учетной записи безопасности должно быть доступно на клиентском сервере и сервере-источнике

  • Поставщик поддерживает режим проверки подлинности Windows; например, SQL Server работает в Windows.

Примечание

Для одношаговых сценариев делегирование включать не обязательно, однако оно необходимо для многошаговых сценариев.

После выполнения проверки подлинности связанным сервером с помощью сопоставлений, определенных при выполнении sp_addlinkedsrvlogin на локальном экземпляре SQL Server, разрешения на отдельные объекты в удаленной базе данных определяются связанным сервером, а не локальным сервером.

Хранимую процедуру sp_addlinkedsrvlogin нельзя выполнять внутри пользовательских транзакций.

Разрешения

Необходимо разрешение ALTER ANY LOGIN на сервере.

Примеры

A. Все локальные имена входа подключаются к связанному серверу с собственными учетными данными

В следующем примере создается сопоставление, гарантирующее, что все имена входа на локальном сервере будут подключаться к связанному серверу Accounts с помощью собственных учетных данных.

EXEC sp_addlinkedsrvlogin 'Accounts';  

либо

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';  

Примечание

Если для отдельных имен входа созданы явные сопоставления, то они имеют преимущество перед любыми глобальными сопоставлениями для данного связанного сервера.

Б. Подключение указанного имени входа к связанному серверу с помощью других учетных данных

В следующем примере создается сопоставление, гарантирующее, что пользователь Windows Domain\Mary будет подключаться к связанному серверу Accounts с помощью имени входа MaryP и пароля d89q3w4u.

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

Важно!

В этом примере проверка подлинности Windows не применяется. Пароли передаются в незашифрованном виде. Пароли могут быть видны в определениях источника данных и скриптах, сохраненных на диске и в составе резервных копий, а также в файлах журналов. Никогда не используйте для таких соединений пароль администратора. За инструкциями по безопасности среды обратитесь к сетевому администратору.

См. также:

Представления каталога связанных серверов (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)