Sql server SetSPN无法定位帐户
我在Windows Server 2012 R2上安装了SQL Server 2014,这也是一个AD DC。当我尝试从同一本地域上的客户端桌面使用SQL Server Management Studio(SSMS)连接到它时,收到以下错误消息:Sql server SetSPN无法定位帐户,sql-server,kerberos,sspi,Sql Server,Kerberos,Sspi,我在Windows Server 2012 R2上安装了SQL Server 2014,这也是一个AD DC。当我尝试从同一本地域上的客户端桌面使用SQL Server Management Studio(SSMS)连接到它时,收到以下错误消息: The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server) 因此,在关于同一问题的其他文章之后,我在SQL server上下
The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server)
因此,在关于同一问题的其他文章之后,我在SQL server上下载了Kerberos Configuration Manager,它发现了2个错误的SPN。Kerberos Configuration Manager建议的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?确保您正在从加入Active Directory域的计算机运行脚本,并且该计算机的DNS正确解析为AD。要查找SERVERNAME$,计算机需要向DNS询问要查询的Active Directory域控制器的位置。SPN脚本也是错误的
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:\>
根据我对@T-Heron回答的最后一条评论,
internal\SERVERNAME$
帐户不存在。它应该是internal.domain.com\SERVERNAME$
,这是与domain\SERVERNAME$
相同的帐户,其中domain
是internal.domain.com
的Windows 2000之前的名称
因此,Kerberos Configuration Manager标识的错位SPN不是初始错误消息的根本原因:目标主体名称不正确。无法生成SSPI上下文。(Microsoft SQL Server)
最初问题的解决方案来自于,在客户端和服务器端都执行了几个步骤来解决问题。使用SQL登录访问是否有问题?您在本地访问时有问题吗?您可以RDP到该Windows框,打开SSMS,Windows身份验证,打开选项将网络协议从默认更改为tcp?@Wendy本地访问很好。我在服务器本身上安装了SSMS,这很有效。当我尝试在客户端windows桌面上使用SQL登录(用户名/密码)登录时,它只是说
无法连接到SERVERNAME。用户“xxx”登录失败。
。当我在本地使用SSM并右键单击服务器名称时,将启用属性->连接:允许远程连接到此服务器。在Sql Server配置管理器中,SERVERNAME的Sql Server网络配置->协议已启用TCP/IP。。。我还应该尝试什么?谢谢!本地访问时,SSMS不使用TCP连接SQL Server。'连接到服务器“,有选项>>按钮,将网络协议从默认更改为tcp。如果你能进去的话。检查用户“xxx”是否有访问权,如果没有添加它并授予权限,则尝试远程使用此用户id访问权。@Wendy如果我在本地启动SSM,我会在安全->登录中看到xxx,并且具有公共和系统管理员角色。当我单击远程SSMS中的Options>>按钮时,网络协议是唯一的选项(下拉菜单没有其他选项)…对不起,帮不了你多少忙。远程SQL和Windows身份验证均失败。请查a。Windows事件日志和SQL日志详细信息。BSQL Server配置,在SQL Server网络和SQL本机网络下,是否都启用了tcp/ip?c、 这是默认SQL Server实例还是命名实例?我实际上在SQL Server上本地运行Keberos Configuration Manager(这也是AD DC-不理想,但这是我的设置),因此我也在本地运行建议的脚本。逗号是一个错别字,已更正。我删除了部分域名混淆。第一级实际上是“内部”的,有问题的命令(带-d的命令)将“内部”作为域名(这是奇怪的部分)。第二个命令(-s)总是运行良好,从来没有出现过问题-但它本身并不能解决我的错误SPN问题…相应地编辑了答案。确保您已登录到内部域以运行第一个命令。结果表明internal.domain.com
和domain
是同一个域,后者是后者的“Windows 2000之前”名称。因此,当我拼出完整的域名时,它的作用是删除:SetSPN-d“MSSQLSvc/SERVERNAME.internal.domain.com”“internal.domain.com\SERVERNAME$”
。但是,在我运行第二个命令后,Kerberos Configuration Manager会抱怨同样的问题:“错位的SPN”。我运行了“SetSPN-L”并确认两个帐户internal.domain.com\SERVERNAME$
和domain\SERVERNAME$
具有完全相同的SPN列表。所以,我想知道这个放错地方的问题是否不重要……我的IPv4设置错误,域srv ip设置不正确,您的提示修复了我的问题。
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:\>