Emm*_*uel 5 sql-server service-broker
我在各种 MSDN 页面和 SQL Server 博客中读到,Service Broker 数据库中“通常”需要主密钥。
实际上,在尝试接收消息时,我收到以下应用程序事件日志消息:
Service Broker 需要访问数据库“MDR_REPLICATION_Z”中的主密钥。错误代码:26。主密钥必须存在并且需要服务主密钥加密。
令我困惑的是,为什么当我所有的对话都设置为 ENCRYPTION = OFF 时会发生这种情况。
有没有办法在 ENCYRPTION 关闭的单个数据库中内部使用 Service Broker 而不必创建数据库主密钥?
我找到了解决方案。
尽管BEGIN DIALOG 中指定的目标服务包含在同一数据库中,但我需要明确目标服务位于同一数据库中这一事实。
CURRENT DATABASE这是通过在指定目标服务时添加可选选项来完成的:
BEGIN DIALOG @dlg_handle
FROM SERVICE CheckpointAndLogInitiatorService
TO
SERVICE 'CheckpointAndLogTargetService', 'CURRENT DATABASE'
ON CONTRACT
CheckpointStart_CheckpointStartReply
WITH ENCRYPTION = OFF;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25791 次 |
| 最近记录: |