Sql-Server
服務代理 - 儘管 ssbdiagnose 說一切都很好,但伺服器之間沒有發生通信
我正在 2 台伺服器 A 和 B 之間建立 Service Broker 通信,我們將呼叫它們。我以這篇文章為例。
A 是 SQL 2005,B 是 SQL 2012。它不起作用,而且我無法找到一個很好的原因。我能看到的是:
接收端的 Profiler 甚至不顯示任何 Service Broker 事件,這表明沒有任何東西可以訪問它。
但是使用 ssbdiagnose 如下,它表示恭喜,您沒有錯誤:
C:\Users\me>ssbdiagnose -level info -E configuration from service ServerAServiceTest -S ServerA -d MyDB to Service ServerBServiceTest -S ServerB -d MyDB on Contract myContract Microsoft SQL Server 11.0.2100.60 Service Broker Diagnostic Utility 0 Errors, 0 Warnings
同樣在傳輸隊列中,我看到的唯一看起來特別不正常的是“to_broker_instance”為空,儘管我在設置路由時明確指定了該資訊。
此外,transmission_status 中沒有顯示任何錯誤。
此外,SQL Server 錯誤日誌沒有任何意義。
至於防火牆問題,嗯,這些是無法從外部訪問的測試伺服器,所以我嘗試完全關閉防火牆。
一件麻煩的事情,我會得到這些:
在目標隊列中排隊消息時發生異常。錯誤:15581 狀態:7. 請在數據庫中創建主密鑰或在會話中打開主密鑰,然後再執行此操作。
我打開鑰匙,這些就消失了。但是我不應該每次想要做某事時都必須反复打開鑰匙,不是嗎?我懷疑這是問題的一部分,即使如上所述錯誤消失了。
很抱歉這個有點懸而未決的問題 - 即使是一些幫助確定從哪裡獲得更多資訊錯誤或調試資訊也會很棒。這對我來說是新的領域。
數據庫主密鑰是否由服務主密鑰加密?如果沒有,db引擎沒有辦法自動打開它。要檢查,請查看
sys.asymmetric_keys
,特別是該pvt_key_encryption_type_desc
列。如果你發現它不是,你可以這樣做alter master key add encryption by service master key