sp_addlinkedsrvlogin (Transact-SQL)
Создает или обновляет сопоставления имен входа в локальном экземпляре SQL Server с учетной записью на удаленном сервере.
Синтаксис
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 указывает, что аргументы rmtuser и rmtpassword используются для подключения к серверу rmtsrvname с указанным именем locallogin. Если аргументы rmtuser и rmtpassword также принимают значение NULL, то имена входа и пароли для подключения к связанному серверу не используются.
[ @locallogin = ] 'locallogin'
Имя входа на локальном сервере. Аргумент locallogin имеет тип sysname и значение по умолчанию NULL. Значение NULL указывает, что данная запись применяется ко всем локальным именам входа, подключающимся к серверу rmtsrvname. Если значение этого аргумента отлично от NULL, то аргумент locallogin может быть именем входа SQL Server или Windows. Имени входа Windows должен быть предоставлен либо прямой доступ к SQL Server, либо доступ через членство в группе Windows, предоставляющей необходимые права доступа.[ @rmtuser = ] 'rmtuser'
Удаленное имя входа, используемое при подключении к серверу rmtsrvname, если значение аргумента @useself равно FALSE. Когда удаленный сервер — это экземпляр SQL Server, который не использует проверку подлинности Windows, аргумент rmtuser является именем входа SQL Server. Аргумент rmtuser имеет тип sysname со значением по умолчанию NULL.[ @rmtpassword = ] 'rmtpassword'
Пароль, назначенный rmtuser. Аргумент rmtpassword имеет тип sysname и значение по умолчанию NULL.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Замечания
Когда пользователь входит на локальный сервер и выполняет распределенный запрос, который обращается к таблице на связанном сервере, то для открытия таблицы локальный сервер должен войти на связанный сервер под именем данного пользователя. Учетные данные входа, с помощью которых локальный сервер будет входить на связанный сервер, задаются с помощью хранимой процедуры sp_addlinkedsrvlogin.
Примечание |
---|
Чтобы создавать наилучшие планы запросов при использовании таблицы на связанном сервере, обработчику запросов необходима статистика распределения данных на связанном сервере. У пользователей с ограниченными разрешениями для столбцов в таблице могут отсутствовать разрешения, необходимые для получения необходимых статистических данных, в связи с чем эти пользователи могут получить менее эффективные планы запросов и производительность их работы может быть снижена. Если связанный сервер является экземпляром SQL Server, чтобы получать все доступные статистические данные, пользователь должен быть владельцем таблицы или членом предопределенной роли сервера sysadmin, предопределенной роли базы данных bd_owner или bd_ddladmin на связанном сервере. |
Сопоставление по умолчанию всех имен входа на локальном сервере с удаленными именами входа на связанном сервере создается автоматически при выполнении процедуры 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 на сервер.
Примеры
А. Все локальные имена входа соединяются со связанным сервером с помощью собственных учетных данных
В следующем примере создается сопоставление, гарантирующее, что все имена входа на локальном сервере будут подключаться к связанному серверу 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 не применяется. Пароли передаются в незашифрованном виде. Пароли могут быть видны в определениях источника данных и сценариях, сохраненных на диске и в составе резервных копий, а также в файлах журналов. Никогда не используйте для таких соединений пароль администратора. За инструкциями по безопасности среды обратитесь к сетевому администратору. |
См. также