Skip to main content
sp_addlinkedsrvlogin (Transact-SQL)
 

ОБЛАСТЬ ПРИМЕНЕНИЯ ЭТОЙ СТАТЬИ: даSQL Server (начиная с 2008) нетБаза данных SQL Azure нетХранилище данных SQL Azure нетParallel Data Warehouse

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

Область применения: SQL Server (сSQL Server 2008 до текущей версии).

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 (неуспешное завершение)

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

System_CAPS_ICON_note.jpg Примечание


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

System_CAPS_ICON_note.jpg Примечание


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

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

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

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

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

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

EXEC sp_addlinkedsrvlogin 'Accounts';  

или

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';  
System_CAPS_ICON_note.jpg Примечание


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

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

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

EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'd89q3w4u';  
System_CAPS_ICON_important.jpg Важно


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

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