0

我们有一个 Service Broker 应用程序,我们在其中在两台独立的非域计算机上的两个 SQL Server 实例之间进行通信。我们的一个测试配置在我们以前从未见过的模式下失败。类似配置的系统似乎工作正常,SSBDiagnose 没有表示任何问题。

以下是我们看到的错误:

一侧记录此错误:

接收数据时出错:'10054(现有连接被远程主机强行关闭。)'。

系统的另一端在 SQL Server 日志中记录这些错误:

 2012-04-24 10:45:52.58 spid17s     Error: 9650, Severity: 16, State: 5.
 2012-04-24 10:45:52.58 spid17s     A system cryptographic call failed during a Service Broker or Database Mirroring operation: system error '5(Access is denied.)'.
 2012-04-24 10:45:52.59 spid17s     Error: 9641, Severity: 16, State: 12.
 2012-04-24 10:45:52.59 spid17s     A cryptographic operation failed. This error indicates a serious problem with SQL Server. Check the SQL Server error log and the Windows event logs for further information.
 2012-04-24 10:45:52.59 Logon       Service Broker login attempt failed with error:  Connection handshake failed. An OS call failed: (0) (null). State 87.'.  [CLIENT: 192.168.220.3]

我们猜测问题出在我们的证书配置上,但是重新安装证书就像我们从头开始重建系统一样并没有帮助。

有没有人见过这些错误,或者知道他们指的是什么失败?

4

2 回答 2

3

我以前见过这种情况,它始终是一些流氓应用程序限制对 RSA 密钥库的访问的问题。我一直无法找到更改权限的罪魁祸首……这不是特定于 Service Broker 的,其他应用程序也遇到了同样的问题,例如。RSA 密钥存储权限

解决方案是授予 SQL Server 服务帐户对该目录\ProgramData\Microsoft\Crypto\RSA\MachineKeys和所有包含文件的读写权限。

如果问题仍然存在,请联系产品支持。

更新。是的,我记得:有一篇关于该问题的知识库文章,Error message when you use Service Broker or database mirroring to connect to an instance of SQL Server 2005: "Connection handshake failed"。我应该记得,我为那个 KB 写了存根 :)

于 2012-05-31T20:32:08.490 回答
2

这可能对某人有帮助。我们遇到了这样的问题(传输状态sys.transmission_queueConnection handshake failed. An OS call failed: (0) (null). State 87.。原因是磁盘空间不足。

于 2016-08-18T09:48:33.030 回答