我正在使用 2 个在 Windows Server 2012 上运行 SQL Server 2012 的 SQL Server 设置 DEV/TEST 环境。我们正在从 Windows Server 2008 上的 SQL Server 2005 迁移,在那里我们已经正确启动并运行。
在 SQL Server 2012 中,Kerberos 身份验证不起作用。
每个服务器都有自己的 Active Directory 帐户,该帐户具有通过 Active Directory 用户和计算机授予的“写入服务主体名称”和“读取服务主体名称”权限。每当我连接到 SQL Server 2005 服务器并运行:
SELECT net_transport, auth_scheme
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
Run Code Online (Sandbox Code Playgroud)
我懂了:
net_transport auth_scheme
TCP KERBEROS
Run Code Online (Sandbox Code Playgroud)
当我对新的 SQL Server 2012 实例执行相同的查询时,我看到:
net_transport auth_scheme
TCP NTLM
Run Code Online (Sandbox Code Playgroud)
如果我SetSPN -Q MSSQLSvc/*用来查询服务主体名称的活动域,我会看到列出的 2005 和 2012 服务器,除了服务器名称之外,其他方式完全相同。
例如:
MSSQLSvc/SERVERa2005.domain.inet
MSSQLSvc/SERVERa2005domain.inet:1433
MSSQLSvc/SERVERb2005.domain.inet
MSSQLSvc/SERVERb2005domain.inet:1433
MSSQLSvc/SERVERa2012.domain.inet
MSSQLSvc/SERVERa2012domain.inet:1433 …Run Code Online (Sandbox Code Playgroud)