Windows Server 2008 R2.
Zainstalowany SQL Server 2008 R2.
Usługa MSSQL działa jako system lokalny.
Nazwa FQDN serwera to SQL01.domain.com.
SQL01 jest przyłączony do domeny Active Directory o nazwie domain.com.
Oto wynik działania 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
Następnie uruchamiam studio SQL Server Management Studio i w ten sposób łączę się z SQL01:
Następnie uruchamiam następujące zapytanie:
SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid
Rezultatem jest NTLM. Dlaczego wynik nie jest Kerberos? Nazwy SPN wydają się poprawne do korzystania z lokalnego konta systemowego. Serwer nie znajduje się w klastrze ani nie używa CNAME.
sql-server
kerberos
sql-server-2008-r2
spn
Ryan Ries
źródło
źródło
Odpowiedzi:
To dlatego, że łączyłem się lokalnie z SQL Server, z tego samego serwera, na którym był zainstalowany SQL Server. Gdy łączę się z innego komputera w sieci, stosowanym mechanizmem uwierzytelniania jest Kerberos, zgodnie z oczekiwaniami.
SQL Server zawsze używa NTLM, jeśli łączy się lokalnie. Kerberos jest używany tylko w przypadku zdalnego połączenia.
Ten post z bloga protokołów SQL Server , choć datowany, mówi to samo:
źródło