sp_addlinkedsrvlogin (Transact-SQL)

Применимо к:SQL Server

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_addlinkedsrvlogin
    [ @rmtsrvname = ] N'rmtsrvname'
    [ , [ @useself = ] 'useself' ]
    [ , [ @locallogin = ] N'locallogin' ]
    [ , [ @rmtuser = ] N'rmtuser' ]
    [ , [ @rmtpassword = ] N'rmtpassword' ]
[ ; ]

Аргументы

[ @rmtsrvname = ] N'rmtsrvname'

Имя связанного сервера, к которому применяется сопоставление входа. @rmtsrvname — sysname без значения по умолчанию.

[ @useself = ] 'useself'

Определяет, следует ли подключаться к rmtsrvname путем олицетворения локальных имен входа или явной отправки имени входа и пароля. @useself — varchar(8) с значением по умолчаниюtrue.

  • Значение true указывает, что имена входа используют собственные учетные данные для подключения к @rmtsrvname, при этом @rmtuser и @rmtpassword аргументы игнорируются.
  • falseуказывает, что аргументы @rmtuser и @rmtpassword используются для подключения к @rmtsrvname для указанного @locallogin.

Если задано значение @rmtuser и @rmtpassword, для подключения к связанному серверу не используется NULLимя входа или пароль.

[ @locallogin = ] N'locallogin'

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

[ @rmtuser = ] N'rmtuser'

Удаленное имя входа, используемое для подключения к @rmtsrvname , когда @useself есть false. @rmtuser — sysname с значением по умолчаниюNULL. Если удаленный сервер является экземпляром SQL Server, который не использует проверку подлинности Windows, @rmtuser является именем входа SQL Server.

[ @rmtpassword = ] N'rmtpassword'

Пароль, связанный с @rmtuser. @rmtpassword — sysname с значением по умолчаниюNULL.

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

0 (успешно) или 1 (сбой).

Замечания

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

Примечание.

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

Сопоставление по умолчанию между всеми именами входа на локальном сервере и удаленными именами входа на связанном сервере автоматически создается путем sp_addlinkedserverвыполнения. Сопоставление по умолчанию указывает, что SQL Server использует учетные данные пользователя локального входа при подключении к связанному серверу от имени имени входа. Это эквивалентно выполнению sp_addlinkedsrvlogin набора @useselftrue для связанного сервера без указания имени локального пользователя. Используйте 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';

Or

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';

Примечание.

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

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

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

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

Внимание

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