Безопасность для связанных серверов

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

Сопоставления имен входа для связанных серверов добавляются с помощью процедуры sp_addlinkedsrvlogin, а удаляются процедурой sp_droplinkedsrvlogin. При сопоставлении имен входа для связанного сервера устанавливаются удаленное имя входа и удаленный пароль для указанного связанного сервера и локального имени входа. При подключении сервера SQL Server к связанному серверу для выполнения распределенного запроса или хранимой процедуры SQL Server ищет сопоставления для текущего имени входа, выполняющего запрос или процедуру. Если сопоставление имен входа существует, SQL Server отправляет соответствующие удаленные имя входа и пароль при подключении к связанному серверу.

Например, сопоставление для связанного сервера S1 настроено на использование локального имени входа U1 для удаленного имени входа U2 с удаленным паролем 8r4li034j7$. При выполнении под локальным именем входа U1 распределенного запроса, который обращается к таблице, хранящейся на связанном сервере S1, в качестве пользовательского идентификатора и пароля для подключения SQL Server к связанному серверу S1 передаются U2 и 8r4li034j7$.

Установленное по умолчанию сопоставление в конфигурации связанного сервера предназначено для эмуляции текущих учетных данных безопасности для имени входа. Такое сопоставление называется самосопоставлением. При добавлении связанного сервера с помощью процедуры sp_addlinkedserver для всех локальных имен входа добавляется самосопоставление по умолчанию. Самосопоставление для проверенных имен входа в Windows поддерживается, если доступно делегирование учетных записей безопасности и связанный сервер поддерживает проверку подлинности Windows.

ПримечаниеПримечание

По возможности используйте проверку подлинности Windows.

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

На распределенные запросы распространяются разрешения, предоставленные удаленному имени входа связанным сервером на удаленную таблицу. Однако SQL Server не выполняет никакой проверки разрешений во время компиляции. Возможные нарушения разрешений выявляются только во время выполнения запроса при сообщении об этом поставщиком.

ПримечаниеПримечание

Чтобы создать наиболее эффективный план запроса при использовании таблицы на связанном сервере, обработчик запроса должен иметь статистику распределения данных со связанного сервера. Пользователи, имеющие ограниченные разрешения для работы со столбцами таблицы, могут не иметь возможности получить необходимую статистику и, как следствие, получат менее эффективный план запроса. Если связанный сервер является экземпляром SQL Server, для получения всей доступной статистики пользователь должен быть владельцем таблицы или членом предопределенной роли сервера sysadmin, db_owner или предопределенной роли базы данных db_ddladmin на связанном сервере.

Тестирование связанных серверов

В обозревателе объектов щелкните правой кнопкой мыши связанный сервер и выберите пункт Проверить соединение.