У меня есть домен test.local с 4 контроллерами домена.
У меня есть SQL Server, иногда при перезагрузке одного из моих контроллеров домена я получал следующую ошибку:
Описание: Код ошибки SSIS DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Код ошибки: 0x80004005. Доступна запись OLE DB. Источник: «Microsoft SQL Server Native Client 11.0» Hresult: 0x80004005 Описание: «Ошибка входа. Вход из ненадежного домена и не может использоваться с проверкой подлинности Windows.».
Почему аутентификация не выполняется на остальных 3 DC? Обычно балансировка нагрузки выполняется при наличии нескольких контроллеров домена.
Спасибо за вашу помощь
вот как я решил эту проблему.
Сначала вам нужно проверить, работает ли ваш экземпляр SQL Server в какой системе аутентификации. Выполните следующий запрос с пользователем Windows AD:
select auth_scheme from sys.dm_exec_connections where session_id=@@spid
Если SQL Server использует проверку подлинности Kerberos, символьная строка, указанная как "KERBEROS
"отображается в столбце auth_scheme в окне результатов.
Если аутентификация NTLM
, значит, у вас возникла проблема.
Потому что, если вы используете NTLM
, каждый раз, когда ваш клиент будет пытаться подключиться к SQL Server, он будет запрашивать AD, чтобы узнать, авторизованы вы или нет.
В аутентификации Kerberos есть система токенов. Клиент, подключенный к базе данных SQL, получит уникальный токен со сроком действия 10 часов (значение по умолчанию в системе Windows). Тогда он истечет. Если контроллер домена недоступен в течение срока жизни токена, вы все равно можете подключиться к своему SQL Server.
(Обязательно выполняйте команды от имени администратора домена). Чтобы настроить Kerberos, вам нужно добавить SPN следующим образом:
SetSPN –A MSSQLSvc/<ComputerName>.<DomainName>:1433 <AccountName>
Например, если моим SQL Server является Server1 в домене redmond.microsoft.com, работающем с учетной записью службы SqlSvcUsr, команда будет выглядеть следующим образом:
SetSPN –A MSSQLSvc/Server1.redmond.microsoft.com:1433 redmond\SqlSvcUsr
Если вы хотите добавить конкретный экземпляр, это будет:
SetSPN –A MSSQLSvc/Server1.redmond.microsoft.com:50203 redmond\SqlSvcUsr
SetSPN –A MSSQLSvc/Server1.redmond.microsoft.com:MyInstance redmond\SqlSvcUsr
Затем перезапустите службу SQL Server. И снова выполните запрос:
select auth_scheme from sys.dm_exec_connections where session_id=@@spid
Должен быть указан Kerberos.
Надеюсь, поможет.
Похоже на знать проблему.
Но мне интересно, связано ли это просто с некоторыми сетевыми настройками или настройками подключения (постоянными?) На вашем сервере MSSQL. Означает, что когда вы перезагружаете свой DC, о котором SQL-сервер не знает, и SQL пытается авторизоваться, он разрывает соединение или повреждает ответ от DC в середине аутентификации.
Это одно из предложений от Документация Microsoft
Произошла ошибка, связанная с сетью или конкретным экземпляром, при установлении соединения с SQL Server.
(Я знаю, что это с другой стороны, но, похоже, это связано с известной проблемой, связанной с сетью)