有关 Service Broker 错误消息的帮助
每当我尝试在两个不同的 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
当此错误引用“数据库主体”时,它指的是什么呢? (“master”数据库?dbo 用户?)我使用了 CREATE CERTIFICATE 命令,备份了证书,并使用第一台服务器上的备份 .cer 文件在另一台服务器上创建了一个相同名称的证书,但我不断收到此消息信息。
任何帮助我指明正确方向的帮助将不胜感激。我一定错过了一些明显的东西。
仅供参考,在我的开发环境中,启动数据库和目标数据库都位于同一物理服务器和同一 SQL 实例上,并且一切正常。
I am getting this error in my sys.transmission_queue table whenever I attempt to send a SQL Service Broker message between two different SQL Server servers. (i.e. the databases are on two different physical machines)
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
When this error refers to "database principal" what is it referring to? (the "master" database? dbo user?) I've used the CREATE CERTIFICATE command, backed up the certificate and created a same named certificate on the other server with the backup .cer file from the first server, but I keep getting this message.
Any help would be appreciated in getting me pointed in the right direction. I must be missing something obvious.
FYI, in my development environment, both the initiating and target databases were on the same physical server, and same SQL instance, and everything was working fine.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该错误涉及托管 Service Broker 服务的数据库中的用户(
select name from sys.database_principals whereprincipal_id = 5
)。除了将证书导出到目标服务器之外,您还需要导入目标服务器的证书,将其与用户关联并创建远程服务绑定以告诉 Service Broker 哪个本地用户代表远程服务。以下 2 篇文章应该会对您有所帮助:Service Broker 对话安全性 和 < a href="http://blogs.msdn.com/sql_service_broker/archive/2008/08/26/securing-a-dialog-with-certificates.aspx" rel="nofollow noreferrer">使用证书保护对话。
The error refers to a user in the database hosting your Service Broker service (
select name from sys.database_principals where principal_id = 5
).In addition to exporting a certificate to the target server, you also need to import target server's certificate, associate it with a user and create a remote service binding to tell Service Broker which local user represents the remote service. The following 2 articles should help you: Service Broker Dialog Security and Securing a dialog with certificates.
除了 Pawel 所说的之外,我还建议提供 SSBDIAGNOSE工具一试。使用 CONFIGURATION 选项,它会准确地告诉您哪些用户需要证书、在哪个数据库中,以及分析端点连接、路由和权限。
In addition to what Pawel said, I'd also recommend to give the SSBDIAGNOSE tool a try. Use the CONFIGURATION option and it will tell you exactly what user needs certificates, in which database, as well as analyzing the endpoint connectivity, the routes and the permissions.