Zha*_*g18 6 sql-server kerberos sspi
我在 Windows Server 2012 R2(也是 AD DC)上安装了 SQL Server 2014。当我尝试从同一本地域上的客户端桌面使用 SQL Server Management Studio (SSMS) 连接到它时,收到以下错误消息:
The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server)
Run Code Online (Sandbox Code Playgroud)
因此,根据同一问题的其他帖子,我在 SQL 服务器上下载了 Kerberos 配置管理器,它发现了 2 个错误的 SPN。Kerberos 配置管理器建议的 SPN 脚本命令如下:
SetSPN -d "MSSQLSvc/SERVERNAME.internal.domain.com" "internal\SERVERNAME$"
SetSPN -s "MSSQLSvc/SERVERNAME.internal.domain.com" "DOMAIN\SERVERNAME$"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在服务器上的 cmd 中运行第一个命令(“SetSPN -d”命令)时,出现以下错误:
FindDomainForAccount: Call to DsGetDcNameWithAccountW failed with return value 0x0000054B
Unable to locate account SERVERNAME$
Run Code Online (Sandbox Code Playgroud)
我不知道如何从这里继续前进。谷歌搜索并没有找到正确的答案。请帮忙。问题是:
1) 错位的 SPN 是罪魁祸首吗?如果是,如何纠正?
2) 如果没有,如何使用 Windows 身份验证从同一本地域上的客户端桌面连接到 SQL Server?
确保您正在从加入 Active Directory 域的计算机运行脚本,并且该计算机的 DNS 正确解析为 AD。要查找 SERVERNAME$,计算机需要向 DNS 询问要查询的 Active Directory 域控制器的位置。SPN 脚本也是错误的。
去掉引号,在这种情况下不需要它们,特别是考虑到没有嵌入的空格可以括起来。
确保您已登录到内部域才能运行第一个命令。第二个命令在登录DOMAIN时运行。
我认为建议的脚本是:
Run Code Online (Sandbox Code Playgroud)SetSPN -d "MSSQLSvc/SERVERNAME.internal.domain.com" "internal\SERVERNAME$" SetSPN -s "MSSQLSvc/SERVERNAME.internal.domain.com" "DOMAIN\SERVERNAME$"
应该是这样的:
Run Code Online (Sandbox Code Playgroud)SetSPN -d MSSQLSvc/SERVERNAME.internal.domain.com internal\SERVERNAME$ SetSPN -s MSSQLSvc/SERVERNAME.internal.domain.com DOMAIN\SERVERNAME$
我刚刚在我的环境中测试了第二行并且它有效。我不需要混淆我的测试环境,所以它实际上如下:
SetSPN -s MSSQLSvc/dc1.dev.local DEV\dc1$
Run Code Online (Sandbox Code Playgroud)
...结果:
Checking domain DC=dev,DC=local
Registering ServicePrincipalNames for CN=DC1,OU=Domain Controllers,DC=dev,DC=local
MSSQLSvc/dc1.dev.local
Updated object
C:\>
Run Code Online (Sandbox Code Playgroud)
根据我对 @T-Heron 的回答的最后评论,该internal\SERVERNAME$帐户不存在。应该是internal.domain.com\SERVERNAME$,它与 的帐户相同DOMAIN\SERVERNAME$,其中DOMAIN是 Windows 2000 之前的名称internal.domain.com。
因此, Kerberos 配置管理器识别出的错误SPN 并不是初始错误消息的根本原因:The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server)
最初问题的解决方案来自这篇文章,其中在客户端和服务器端执行了几个步骤来解决问题。
| 归档时间: |
|
| 查看次数: |
19720 次 |
| 最近记录: |