我們試圖通過遵循MSDN的教程,通過Service Broker在一個SQL Engine中的兩個SQL實例之間進行對話。 爲了簡單起見,我們發送Encryption = OFF的對話框,因此我們不需要處理主密鑰,證書...以及它在本地工作站中工作。Service Broker中的私鑰問題
DECLARE @InitDlgHandle UNIQUEIDENTIFIER;
DECLARE @RequestMsg NVARCHAR(100);
BEGIN TRANSACTION;
BEGIN DIALOG @InitDlgHandle FROM SERVICE [// InstDB/2InstSample/InitiatorService] TO SERVICE N '// TgtDB/2InstSample/TargetService' ON合同[// 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跟蹤中始終顯示「無法找到私鑰,消息無法傳遞」。
我的問題是,因爲我們設置加密= OFF,爲什麼目標數據庫顯示缺少證書?
我們使用SQL 2005 SP2,Windows 2003
讚賞任何輸入。
如果你真的想知道「爲什麼?」,那麼我很確定Remus是地球上可能真正知道的6人之一。希望他能看到... ...僅供參考,Service Broker至少有十幾個這樣的未記錄(或非常模糊記載)的謎團,而且不像SQLCLR等那樣是一個廣泛普及的功能,MS沒有太多關於如何或爲什麼這些事情成了。他們只是。 – RBarryYoung 2009-06-19 14:24:17