2010-04-08 94 views
1

每當我嘗試在兩個不同的SQL Server服務器之間發送SQL Service Broker消息時,我都會在sys.transmission_queue表中收到此錯誤。 (即數據庫位於兩臺不同的物理機器上)Service Broker錯誤消息幫助

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實例,並且一切正常。

回答

2

錯誤指的是託管Service Broker服務的數據庫中的用戶(select name from sys.database_principals where principal_id = 5)。

除了將證書導出到目標服務器之外,還需要導入目標服務器的證書,將其與用戶關聯,並創建遠程服務綁定以告知Service Broker哪個本地用戶代表遠程服務。以下兩篇文章可以幫助您:Service Broker Dialog SecuritySecuring a dialog with certificates

+1

另一個資源(如果擁有SQL Server Central Web帳戶)是以下文章:http://www.sqlservercentral.com/articles/Service+Broker/2797/ – yanigisawa 2010-04-08 22:16:31

+1

事實證明,我已經創建了Initiating服務與:「授權」;而不是忽略這個條款。一旦我在沒有AUTHORIZATION語句的情況下刪除並重新創建啓動服務,它就開始工作。 – yanigisawa 2010-04-08 22:17:45

1

除了Pawel說的外,我還建議嘗試使用SSBDIAGNOSE工具。使用CONFIGURATION選項,它會告訴你用戶需要什麼證書,在哪個數據庫中,以及分析端點連接,路由和權限。

+0

感謝Remus的工具。它並沒有最終幫助我們找到確切的問題,但是當我們從另一臺服務器恢復備份時,它很方便地找出了我們所遇到的重複的service_broker_guid問題。 – yanigisawa 2010-04-08 22:18:47