Связанные серверы в SQL Server позволяют вам получать доступ к данным с другого сервера, предоставляя возможность запроса и манипулирования данными на разных серверах. Однако, при использовании аутентификации Windows с связанными серверами, вы можете столкнуться с ограничением в 2 перехода, когда нельзя перейти на два сервера. В этой статье мы рассмотрим это ограничение и способы его обхода с использованием аутентификации Kerberos.
Ограничение в 2 перехода
Ограничение в 2 перехода возникает, когда у вас есть соединение от клиента, вошедшего в SQL сервер, который имеет связанный сервер на другом сервере. При попытке выполнить запрос с использованием связанного сервера, вы можете получить сообщение об ошибке “Ошибка входа для пользователя ‘NT Authority\ANONYMOUS’ LOGON”. Это ограничение связано с протоколом аутентификации, с которым клиент подключается, а именно с аутентификацией NT Lan Manager (NTLM).
Исправление аутентификации Kerberos
Чтобы преодолеть ограничение в 2 перехода, вам необходимо реализовать аутентификацию Kerberos. Вот шаги для исправления аутентификации Kerberos:
- Создайте имена главных серверов (SPN) для всех задействованных серверов. Это можно сделать автоматически, предоставив учетную запись Active Directory (AD), используемую в качестве учетной записи службы, расширенное разрешение “запись общедоступной информации”. В качестве альтернативы, вы можете использовать утилиту SETSPN или Kerberos Configuration Manager для создания SPN вручную.
- Убедитесь, что учетная запись службы SQL находится в том же домене, что и учетная запись компьютера. Если это не так, необходимо настроить доверительные отношения и разрешения для учетной записи службы, чтобы она могла создавать SPN в другом домене.
- Проверьте, что DHCP, DNS и AD работают корректно. Дублирующиеся PTR-записи, неправильные записи A Host и CNAME могут вызывать проблемы с аутентификацией.
- Проверьте протокол аутентификации, запустив запрос “SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID”. Результат должен быть “Kerberos”, если все реализовано правильно.
- Предоставьте делегирование учетной записи службы на сервере, владеющем связанным сервером. Это можно сделать, перейдя на вкладку делегирования в свойствах пользователя AD и выбрав “Доверять этому пользователю для делегирования любой службе”.
Тестирование связанного сервера
После правильной настройки аутентификации Kerberos вы можете протестировать связанный сервер. Подключитесь к серверу, используя свои учетные данные AD, и выполните запрос с использованием связанного сервера. Если все настроено правильно, вы должны смочь получить желаемый набор результатов без ошибки “Ошибка входа”.
Заключение
Реализуя аутентификацию Kerberos, вы можете преодолеть ограничение в 2 перехода и успешно использовать связанные серверы в SQL Server. Важно убедиться, что все необходимые конфигурации на месте, включая SPN, доверительные отношения между доменами и правильную коммуникацию между DHCP, DNS и AD. С аутентификацией Kerberos вы можете безопасно получать доступ и манипулировать данными на нескольких серверах в вашей среде SQL Server.