1

我有一个客户端,我无法使用 SQL Server 客户端工具远程连接到他的数据库 他正在运行安装在实例名称 INTERNAL 中的 SQL Server 2012

我缩小了问题的范围

我跑

execute XP_READERRORLOG

并得到错误:

SQL Server 网络接口库无法为 SQL Server 服务注册服务主体名称 (SPN) [ MSSQLSvc/SERVERNAME.domainname.com:INTERNAL ]。Windows 返回代码:0xffffffff,状态:63。未能注册 SPN 可能会导致集成身份验证使用 NTLM 而不是 Kerberos。这是一条情报信息。仅当身份验证策略需要 Kerberos 身份验证并且尚未手动注册 SPN 时,才需要执行进一步操作。

所以我检查了sql服务是否在默认虚拟帐户“NT Service\MSSQL$INTERNAL”下运行

我按照这里的建议http://msdn.microsoft.com/en-us/library/ms191153.aspx

setspn -A MSSQLSvc/ServerName.domainname.com:1433 "NT Service\MSSQL$INTERNAL"

但是它告诉我:

找不到帐户 MSSQL$INTERNAL

我在命令提示符命令中做错了什么?

我在这里读了一篇博客

如果 SQL Server 实例在 LocalSystem 帐户下运行,则不必运行 SETSPN 实用程序。

但我不明白为什么我会收到错误消息?

4

2 回答 2

2

由于该服务作为网络服务运行,我相信帐户名需要是机器名。

Tristan 在他的博客http://blogs.technet.com/b/tristank/archive/2006/05/08/spns-r-fn.aspx中展示了类似的内容。

他的示例适用于 HTTP,但您应该能够将其更改为 MSSQLSvc:

对于在默认端口上作为 NetworkService 运行的应用程序池:

SETSPN -A HTTP/intranetweb syd-inet-web01 (最后一部分是机器名称)

于 2013-07-07T23:50:16.533 回答
1

从 abatishchev 的消息中可以看出,SQL 服务是在虚拟帐户下运行的(Windows7/Server2008R2 中的常见场景)而不是网络服务。我有同样的问题,我的结论是无法为虚拟(可能还有 MSA)帐户手动注册 SPN...

除了 MS191153,您还可以阅读 ms143504(SQL.110),其中指出:“如果虚拟帐户无法注册服务主体名称 (SPN),请手动注册 SPN”。并将您发送到 MS191153,除了说 VA 和 MSA 默认情况下都有权注册 SPN 之外,它没有提供任何有用的信息来专门执行此操作。如果您阅读文章“服务帐户分步指南”,您可以阅读 Windows Server 2008 R2 功能级别的域为 MSA 和 VA 的自动密码管理和 SPN 管理提供本机支持。对于 Windows 2003/8,需要额外的配置。你的域名 FL 是什么?

在我的情况下,服务重新启动后,SPN 自动注册,没有任何进一步的问题。再次感谢 MS 的“简化”事情......

于 2016-08-28T17:24:08.143 回答