除非服务帐户是两端的管理员,否则使用Windows身份验证的服务代理连接将失败

时间:2011-07-14 13:37:50

标签: sql-server sql-server-2008 service-broker

拓扑结构:

计算机A - Windows Server 2008 - SQL 2008 R2 Dev SQL Server作为mydomain \ user1

运行

机器B -Windows 7 -SQL 2008 R2 Dev SQL Server作为mydomain \ user1

运行

我已将服务帐户的任一端授予连接到SQL Server上端点的权限。如果我将mydomain \ user1添加到任一端的计算机管理员组中,则连接没有问题。如果我从这些组中删除它,我会收到以下消息:

连接握手失败。 OS调用失败:(8009030c)0x8009030c(登录尝试失败)。州67.

感谢任何帮助。我们确实不确定所需的最低权利。我们计划最终将其迁移到生产环境,我不希望sql服务作为本地计算机管理员运行。顺便说一句,我已经让我的服务器管理员在循环中,并且SPN似乎是根据他们的知识正确设置的。

我在MSDN论坛here上提出了同样的问题。

1 个答案:

答案 0 :(得分:0)

如果两台计算机都作为域用户服务帐户运行,并且您授予了必要的权限(SSB端点上的CONNECT),那么您需要在SSB配置端进行其他任何操作。该错误是操作系统错误,调查的最佳方法是使用Kerberos疑难解答文档:Troubleshooting Kerberos Errors

最可能的原因是格式化的SPN格式不正确。 Service Broker要求和SPN一样MSSQLSvc\<hostname>:<port>。它将从路由地址格式化请求的SPN(DsMakeSpn),因此如果在路由中使用FQDN,则SPN必须是FQDN,如果仅使用主机名,则SPN必须基于主机名。该部分也来自路线,如果省略则是默认的4022.