SetSPN无法找到帐户
我在Windows Server 2012 R2(也是AD DC)上安装了SQL Server 2014。当我尝试使用SQL Server Management Studio中(SSMS)从同一本地域中的客户端桌面连接到它,我得到这个错误信息:SetSPN无法找到帐户
The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server)
所以就同一问题下面的其他职位,我下载的Kerberos SQL服务器上的配置管理器发现2个错位的SPN。是由Kerberos配置管理器提出的SPN脚本命令如下:
SetSPN -d "MSSQLSvc/SERVERNAME.internal.domain.com" "internal\SERVERNAME$"
SetSPN -s "MSSQLSvc/SERVERNAME.internal.domain.com" "DOMAIN\SERVERNAME$"
但是,当我试图在服务器上运行在cmd中的第一个命令(下称“的SetSPN -D”之一),我得到这个错误:
FindDomainForAccount: Call to DsGetDcNameWithAccountW failed with return value 0x0000054B
Unable to locate account SERVERNAME$
我不知道如何从这里前进。谷歌搜索没有找到正确的答案。请帮忙。问题是:
1)错位SPN是罪魁祸首吗?如果是这样,如何纠正?
2)如果不是,我如何使用Windows身份验证从同一本地域上的客户端桌面连接到SQL Server?
按我最新的留言@ T鹭的回答, internal\SERVERNAME$
帐户确实存在而不是。它应该是internal.domain.com\SERVERNAME$
,与DOMAIN\SERVERNAME$
的帐户相同,其中DOMAIN
是internal.domain.com
的Windows 2000以前的名称。
其结果是,该错位的 SPN所确定的Kerberos配置管理器不是初始错误消息的根本原因:The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server)
到初始问题的解决方案从this post,其中执行若干步骤来在客户端和服务器端解决问题。
确保您从加入Active Directory域的计算机运行脚本,并且计算机的DNS正确解析为AD。要查找SERVERNAME $,计算机需要询问DNS查询Active Directory域控制器的位置。 SPN脚本也是错误的。
- 摆脱引号,在这种情况下不需要它们,特别是在没有嵌入空格的情况下。
-
确保您是登录到内部域为了运行第一个命令。第二条命令在登录时运行DOMAIN。
我想建议的脚本:
SetSPN -d "MSSQLSvc/SERVERNAME.internal.domain.com" "internal\SERVERNAME$" SetSPN -s "MSSQLSvc/SERVERNAME.internal.domain.com" "DOMAIN\SERVERNAME$"
应该是这个:
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$
...和结果:
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:\>
你有使用SQL登录访问的问题吗?你有本地访问的问题,你RDP到那个Windows机器,打开SSMS,Windows认证,打开选项改变网络协议从默认到tcp? – Wendy
@ Wendy本地访问没问题。我在服务器上安装了SSMS,并且工作正常。当我尝试在客户端Windows桌面上使用SQL登录(用户名/密码)进行登录时,它只是说'无法连接到SERVERNAME。用户'xxx''的登录失败。当我在本地使用SSMS并右键单击服务器名称时,Properties - > Connections:允许远程连接到此服务器已启用。在Sql Server配置管理器中,SQL Server网络配置 - > SERVERNAME的Protocals启用了TCP/IP ...我还应该尝试什么?谢谢! – Zhang18
当本地访问时,SSMS不使用TCP连接SQL Server。 '连接到服务器',有选项>>按钮,将网络协议从默认改为tcp。如果你能进入。检查用户'xxx'是否有权访问,如果没有添加它并给予权限然后尝试远程使用这个用户ID访问。 – Wendy