Windows Server 2008 R2.
SQL Server 2008 R2 установлен.
Служба MSSQL работает как локальная система.
Полное доменное имя сервера: SQL01.domain.com.
SQL01 присоединяется к домену Active Directory с именем domain.com.
Ниже приводится вывод setspn:
C:\> setspn -L sql01
...
MSSQLSvc/SQL01.domain.com:1433
MSSQLSvc/SQL01.domain.com
WSMAN/SQL01.domain.com
WSMAN/SQL01
TERMSRV/SQL01.domain.com
TERMSRV/SQL01
RestrictedKrbHost/SQL01
RestrictedKrbHost/SQL01.domain.com
HOST/SQL01.domain.com
HOST/SQL01
Затем я запускаю SQL Server Management studio и подключаюсь к SQL01 следующим образом:
Затем я запускаю следующий запрос:
SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid
И результат NTLM. Почему результат не Kerberos? Похоже, что имена участников-служб подходят для использования учетной записи локальной системы. Сервер не находится в кластере или не использует CNAME.
sql-server
kerberos
sql-server-2008-r2
spn
Райан Райс
источник
источник
Ответы:
Это потому, что я подключался к SQL Server локально, с того же сервера, на котором размещался SQL Server. Когда я подключаюсь с другого компьютера в сети, используется механизм аутентификации Kerberos, как и ожидалось.
SQL Server всегда будет использовать NTLM при локальном подключении. Kerberos используется только при удаленном подключении.
Этот пост из блога SQL Server Protocols , хотя и устаревший, говорит о том же:
источник