Определить, включена ли аутентификация в смешанном режиме без входа в систему?

Ответы:

15

Другой подход - попытаться войти в систему, используя аутентификацию SQL, с явно фальшивой учетной записью, которая не будет успешной. Затем вы можете использовать блокнот, чтобы открыть ERRORLOGфайл C:\Program Files\Microsoft SQL Server\$instance folder$\MSSQL\Log\и увидеть эту ошибку ...

Ошибка: 18456, серьезность: 14, состояние: 58 .
Не удалось войти в систему для пользователя 'polly_wants_a_cracker'. Причина: попытка входа с использованием проверки подлинности SQL не удалась. Сервер настроен только для аутентификации Windows.

Это означает, что аутентификация в смешанном режиме не включена .

... или этот ...

Ошибка: 18456, серьезность: 14, состояние: 5 .
Не удалось войти в систему для пользователя 'polly_wants_a_cracker'. Причина: не удалось найти логин, соответствующий указанному имени.

Это означает, что аутентификация в смешанном режиме включена .

Я не знаю, что, возможно, есть способ сказать без:

  • вход в систему успешно
  • наличие физического доступа к ящику (или удаленному реестру) для проверки конфигурации реестра (как описывает Жюльен ) или журнала ошибок для состояния / сообщения при неудачном входе в систему
Аарон Бертран
источник
18

Вы можете проверить это в реестре:

HKLM\Software\Microsoft\Microsoft SQL Server\ [instancename] \MSSqlServer

Текущий режим записывается в LoginModeключ.

Значения (DWORD) могут быть:

  • 1 = режим аутентификации Windows
  • 2 = SQL Server и режим аутентификации Windows

Замечания:

  • 0 эквивалентно 2
  • Вам все еще нужен доступ к реестру (и серверу)
Жюльен Вавассер
источник
2

Вы также можете сделать это через PowerShell:

import-module sqlserver
$sqlserver = "ServerName"
$srv = Get-SqlServer -sqlserver $sqlserver
$srv.LoginMode

Это вернет вывод, как это:

введите описание изображения здесь

RonDBA
источник