MSSQL Error 17806: SSPI handshake failed with error code — решение
- Ошибка
Msg 17806, Level 14, State 2: SSPI handshake failed with error code 0x8009030c (or 0x80090304), state 14 while establishing a connection with integrated security. - Клиенты 1С:Предприятие получают отказ при попытке подключения к базе данных под доменными учетными записями.
- Служба сервера 1С (rphost) не может установить связь с пулом соединений SQL Server.
- В Errorlog регистрируются множественные сбои входа с признаком деградации протокола безопасности.
1. Расшифровка кодов ошибок SSPI API (Security Support Provider Interface)
0x8009030c (SEC_E_LOGON_DENIED): Учетная запись заблокирована в AD, истек срок пароля или запрещен вход на данный рабочий узел.0x80090304 (SEC_E_INTERNAL_ERROR): Ошибка связи LSA с контроллером домена, сбой NTLM/Kerberos провайдера.0x80090322 (SEC_E_WRONG_PRINCIPAL): Неверный или дублирующийся Service Principal Name (SPN) в Active Directory.
2. Диагностика и автоматическое исправление SPN с помощью Microsoft Kerberos Configuration Manager
:: Ручная проверка регистрации SPN по порту 1433
setspn -L DOMAIN\SQLServiceAccount
:: Регистрация корректного SPN для инстанса по умолчанию
setspn -A MSSQLSvc/sqlserver.corp.local:1433 DOMAIN\SQLServiceAccount
setspn -A MSSQLSvc/sqlserver.corp.local DOMAIN\SQLServiceAccount3. Проверка прав учетной записи службы SQL Server в Active Directory
Предоставьте учетной записи службы право Read servicePrincipalName и Write servicePrincipalName (Self-SPN registration) на свой собственный объект в домене.
4. Проверка протокола NTLM в групповых политиках (GPO)
:: Проверьте политику Network security: Restrict NTLM
gpresult /h gpreport.htmlЕсли в домене заблокирован NTLM (NTLM traffic restricted), убедитесь, что Kerberos отрабатывает без ошибок и не деградирует до NTLM.
5. Проверка часов (Time Skew)
w32tm /resync /rediscover Частые вопросы (FAQ)
Почему ошибка 17806 исчезает при подключении по IP-адресу вместо FQDN?
При подключении по IP-адресу клиентский стек отключает Kerberos и принудительно переключается на протокол NTLM. Если NTLM разрешен, авторизация проходит успешно.
Как узнать, по какому протоколу (NTLM или Kerberos) подключена текущая сессия 1С?
Выполните T-SQL запрос: SELECT session_id, net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID; (значение auth_scheme покажет KERBEROS или NTLM).
Что делать при ошибке 0x8009030c?
Проверьте учетную запись службы SQL и пользователя 1С в Active Directory: снимите флаг 'Account is locked out', проверьте срок действия пароля и ограничения 'Logon To'.
Повлияет ли исправление SPN на работающих пользователей?
Регистрация нового SPN не прерывает текущие сессии, но новые сессии 1С сразу начинают использовать корректные билеты Kerberos.