Назад | Перейти на главную страницу

Несколько контроллеров домена и ошибка входа в систему SQL при перезагрузке

У меня есть домен 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.

(Я знаю, что это с другой стороны, но, похоже, это связано с известной проблемой, связанной с сетью)