Service Broker中的私钥问题

时间:2009-06-19 14:16:08

标签: sql-server sql-server-2005 service-broker

我们正尝试通过MSDN中的教程,通过Service Broker在一个SQL引擎中的两个SQL实例之间进行对话。 为了简单起见,我们发送带有Encryption = OFF的对话框,这样我们就不需要处理Master密钥,证书......它可以在本地工作站上运行。

DECLARE @InitDlgHandle UNIQUEIDENTIFIER;

DECLARE @RequestMsg NVARCHAR(100);

BEGIN TRANSACTION;

BEGIN DIALOG @InitDlgHandle      FROM SERVICE [// InstDB / 2InstSample / InitiatorService]      服务N'// TgtDB / 2InstSample / TargetService'      ON CONTRACT [// BothDB / 2InstSample / SimpleContract]      WITH          ENCRYPTION = OFF;

SELECT @RequestMsg = N'Message for Target service。';

发送对话@InitDlgHandle      消息类型[// BothDB / 2InstSample / RequestMessage]      (@RequestMsg);

SELECT @RequestMsg AS SentRequestMsg;

COMMIT TRANSACTION; GO

但是,移动到服务器后,使用相同的脚本,目标数据库在initDB发出消息后,在SQL跟踪中不断显示“无法找到私钥,消息无法传递”。

我的问题是,因为我们设置加密=关闭,为什么目标数据库显示缺少证书?

我们使用SQL 2005 SP2,Windows 2003

赞赏任何输入。

1 个答案:

答案 0 :(得分:1)

谈到晚会迟到......
之前没见过这篇文章。我不知道是否仍有任何相关性,但这可能是原因:

REMOTE SERVICE BINDING存在将胜过ENCRYPTION = OFF。这是为了允许开发人员职责与管理员职责分开。如果应用程序需要加密,则开发人员指定ENCRYPTION = ON,管理员必须提供REMOTE SERVICE BINDING。如果应用程序不需要加密,则开发人员指定ENCRYPTION = OFF,如果部署站点决定需要加密,则管理员可能提供远程服务绑定,即使应用程序不需要加密。

我的网站上可以找到full description of how dialog security and authentication works