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 и подключаюсь к SQL01 следующим образом:
Затем я запускаю следующий запрос:
SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid
И результат - NTLM. Почему результат не Kerberos? SPN кажется правильным для использования учетной записи Local System. Сервер не входит в кластер и не использует CNAME.
Это потому, что я подключался к SQL Server локально с того же сервера, на котором размещался SQL Server. Когда я подключаюсь с другого компьютера в сети, как и ожидалось, используется механизм проверки подлинности Kerberos.
SQL Server всегда будет использовать NTLM при локальном подключении. Kerberos используется только при удаленном подключении.
Это сообщение от Блог о протоколах SQL Server, будучи датированным, говорит то же самое:
1) Kerberos используется при удаленном подключении через TCP / IP, если присутствует SPN.
2) Kerberos используется при локальном TCP-соединении на XP, если присутствует SPN.
3) NTLM используется при локальном подключении к WIN 2K3.
4) NTLM используется через соединение NP.
5) NTLM используется через TCP-соединение, если не найдено SPN.