我的 Windows 服务使用集成身份验证并在本地系统帐户下运行,并得到以下异常。
目标主体名称不正确。无法生成 SSPI 上下文。
SQL Server 服务在域管理员用户下运行,例如“域\管理员”。如果我将 SQL Server 服务更改为在本地系统帐户下运行,则它可以修复上述错误。
谁能解释为什么会这样?我们有一个 InstallShield 向导,它在客户端安装我们的应用程序,我不知道我们如何通过向导处理这种行为。此外,更改 SQL Server 服务的用户也不现实,因为客户端可能不允许这样做。
注意:一旦我的 Windows 服务正常运行并且我恢复在管理员帐户下运行的 SQL Server,我的服务运行正常。我猜有一些权限设置为本地系统帐户。
在此之前,我运行了 Kerberos,它生成了以下脚本来运行并修复了该问题。在此之后,不需要更改 SQL Server 服务的用户。
SetSPN -d "MSSQLSvc/FQDN" "域\机器$"
SetSPN -s "MSSQLSvc/FQDN" "域\管理员"
请解释为什么会发生这种情况以及处理这种情况的最佳方法是什么?