1

每当我尝试在两个不同的 SQL Server 服务器之间发送 SQL Service Broker 消息时,我的 sys.transmission_queue 表中都会出现此错误。(即数据库在两台不同的物理机器上)

Dialog security is unavailable for this conversation because there is no security 
certificate bound to the database principal (Id: 5).  
Either create a certificate for the principal, or specify ENCRYPTION = OFF 
when beginning the conversation 

当此错误涉及“数据库主体”时,它指的是什么?(“主”数据库?dbo 用户?)我使用了 CREATE CERTIFICATE 命令,备份了证书并使用来自第一台服务器的备份 .cer 文件在另一台服务器上创建了一个相同命名的证书,但我一直得到这个信息。

任何帮助将不胜感激,让我指出正确的方向。我一定遗漏了一些明显的东西。

仅供参考,在我的开发环境中,启动数据库和目标数据库都位于同一物理服务器和同一 SQL 实例上,一切正常。

4

2 回答 2

2

该错误涉及托管您的 Service Broker 服务的数据库中的用户 ( select name from sys.database_principals where principal_id = 5)。

除了将证书导出到目标服务器之外,您还需要导入目标服务器的证书,将其与用户关联并创建远程服务绑定,以告诉 Service Broker 哪个本地用户代表远程服务。以下 2 篇文章应该对您有所帮助:Service Broker 对话安全使用证书保护对话

于 2010-04-08T15:26:39.700 回答
1

除了 Pawel 所说的,我还建议尝试使用SSBDIAGNOSE工具。使用 CONFIGURATION 选项,它将准确告诉您哪些用户需要证书、在哪个数据库中,以及分析端点连接、路由和权限。

于 2010-04-08T15:34:11.363 回答