【问题标题】:Help with Service Broker error message帮助 Service Broker 错误消息
【发布时间】:2010-04-08 12:38:46
【问题描述】:

每当我尝试在两个不同的 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 实例上,一切正常。

【问题讨论】:

    标签: sql-server service-broker


    【解决方案1】:

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

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

    【讨论】:

    • 另一个资源(如果有 SQL Server Central Web 帐户)是以下文章:sqlservercentral.com/articles/Service+Broker/2797
    • 事实证明我创建了启动服务:“AUTHORIZATION ”;而不是省略这个条款。一旦我删除并重新创建了没有 AUTHORIZATION 语句的启动服务,它就开始工作了。
    【解决方案2】:

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

    【讨论】:

    • 感谢 Remus 提供的工具。它最终并没有帮助我们找到确切的问题,但它在我们从另一台服务器恢复备份时识别出重复的 service_broker_guid 问题时很方便。
    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 2010-10-29
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多