SQL Server 网络接口库无法注册服务主体名称 (SPN)

Pus*_*kar 0 sql-server sql-server-2014

Windows 返回代码:0x21c7,状态:15。未能注册 SPN 可能会导致集成身份验证使用 NTLM 而不是 Kerberos。这是一条情报信息。仅当身份验证策略需要 Kerberos 身份验证并且尚未手动注册 SPN 时,才需要采取进一步措施。

每当我重新启动我的 SQL 服务时,我都会遇到上述错误。我将其从当前服务帐户更改为本地帐户,并且能够从本地计算机连接到 SSMS,但是如果我使用当前服务帐户,则会出现此错误,并且在 SSMS 中,错误是:

目标主体名称不正确。无法生成 SSPI 上下文。

此服务帐户的密码不会更改。

Mas*_*him 6

当尝试注册已经存在但可能在不同帐户下的 SPN 时,您会特别收到错误“0x21c7,状态:15”。

在本地系统帐户下运行 SQL 服务时,会在 AD 中的计算机对象下注册一个 SPN。您可以从下面确认:

setspn -l ComputerName
Run Code Online (Sandbox Code Playgroud)

在上述结果中,如果您看到 MSSQLSvc 的任何 SPN,则需要在 AD 上使用以下命令删除它们(您需要为此具有域管理员权限),以便您可以在新的服务帐户下注册 SPN:

setspn -d MSSQLSvc/FQDN:XXXXXXXXXX ComputerName
Run Code Online (Sandbox Code Playgroud)

完成上述操作后,重新启动服务帐户下的 SQL 服务,它应该会在新服务帐户下成功注册 SPN,您将能够通过运行以下命令进行确认:

setspn -l DomainName\LoginName
Run Code Online (Sandbox Code Playgroud)

参考:http : //www.b-blog.info/en/changed-service-account-for-ms-sql-server-2012-and-the-following-issues.html

您还可以使用 Microsoft Kerberos Configuration Manager for SQL Server 自动检测和修复此类 SPN 问题:

https://blogs.msdn.microsoft.com/farukcelik/2013/05/21/new-tool-microsoft-kerberos-configuration-manager-for-sql-server-is-ready-to-resolve-your-kerberosconnectivity-问题/