Основываясь на нашем разговоре, одна из распространенных причин, которые могут иметь место, заключается в том, что на SQL сервере не зарегистрировано имя участника-службы. Это то, что нужно для работы kerberos.
Для этого вы используете утилиту setspn
.
В этом документе много всего, здесь основы. Имя участника службы применяется к некоторой конкретной службе (например, sql сервер), на некотором конкретном компьютере и порту, к некоторой конкретной учетной записи домена. Представим, что имя вашей серверной машины - MyServer, а учетная запись, на которой запущен экземпляр сервера SQL, - MyDomain \ SQLAccount, и это экземпляр по умолчанию (работает на порту 1433. Если это именованный экземпляр, найдите порт с помощью диспетчера конфигурации sql или просмотрев начало журнала sql и подставив его ниже)
Чтобы увидеть список SPN, назначенных учетной записи, вы должны использовать
setspn -l MyDomain\SQLAccount
Чтобы зарегистрировать SPN для служба сервера SQL, лучше всего зарегистрироваться для имени netb ios и полного имени:
setspn -a MSSQLSvc/MyServer:1433 MyDomain\SQLAccount
setspn -a MSSQLSvc/MyServer.mydomain.com:1433 MyDomain\SQLAccount
Теперь, если у вас несколько контроллеров домена, репликация SPN может занять некоторое время вокруг домена. Поэтому вам нужно подождать «достаточно долго», чтобы увидеть, как это подействует. 15 минут - обычное дело, 30 - определенно безопасно. Поэтому после запуска подождите некоторое время, затем создайте новое соединение с SQL сервером (используя, например, SSMS и windows auth) и снова select auth_scheme from sys.dm_exec_connections where session_id = @@spid
. Если вы видите "керберос", это сработало. Вы также можете запустить klist purge
из командной строки, чтобы очистить ваши билеты, но обычно в этом нет необходимости, и это не поможет, если билет еще не реплицирован.
Это не единственная возможная причина почему у вас могут возникнуть проблемы с SSPI - подробнее см. в блоге MS. Но это действительно распространенная проблема.
РЕДАКТИРОВАТЬ:
Проблемы с Kerberos обычно возникают только тогда, когда у вас есть «двойной прыжок» учетных данных. Например, с компьютера пользователя на веб-сервер, затем с веб-сервера на сервер SQL. Это не относится к вашему конкретному случаю c. Но я бы все равно попробовал эту настройку SPN, потому что это очень частый источник ошибок SSPI.