为什么MS SQL Server使用NTLM身份validation?

Windows Server 2008 R2。

SQL Server 2008 R2安装。

MSSQL服务作为本地系统运行。

服务器FQDN是SQL01.domain.com。

SQL01join到名为domain.com的Active Directory域。

以下是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? SPN似乎是正确的使用本地系统帐户。 服务器不在群集中或使用CNAME。

这是因为我是从托pipeSQL Server的同一台服务器本地连接到SQL Server。 当我从networking上的另一台计算机连接时,所使用的身份validation机制是Kerberos,正如所料。

如果本地连接,SQL Server将始终使用NTLM。 只有远程连接才能使用Kerberos。

从SQL Server协议博客的这篇文章,虽然date,说了同样的事情:

1)如果SPN出现,通过TCP / IP进行远程连接时使用Kerberos。

2)如果SPN出现,在XP上进行本地tcp连接时使用Kerberos。

3)在WIN 2K3上进行本地连接时使用NTLM。

4)NTLM通过NP连接使用。

5)如果没有findSPN,NTLM通过TCP连接使用。