2010-05-28 38 views
11

在服務器上設置了一個可用的Service Broker,我們正在轉移到新的服務器,但似乎無法在新框中設置Service Broker。服務代理在數據庫恢復後不工作

也做了明顯的(對我)之類的DB啓用代理,下降的路線,服務,合同,隊列,甚至消息類型,並重新加入他們,狀態設置ALTER QUEUE ON

SELECT *從sys.service_queues

給我的隊列列表,包括我自己的兩隻,其顯示爲activation_enabled,receive_enabled等

不用多說了隊列不工作。當我把信息投入他們的時候什麼也沒有進去,沒有任何東西出來

任何想法?我敢肯定有東西真的很明顯我已經錯過了......

回答

30

只是在黑暗中拍攝:

ALTER AUTHORIZATION ON DATABASE::[restored db name] TO [sa]; 

還原的數據庫的DBO是Windows SID創建原始數據庫服務器。這可能是在新服務器上沒有意義的本地SID(例如,SERVERNAME \ user)。此問題通常會影響激活的過程,並且可能會影響消息傳遞,這兩個問題都是由於SQL無法模擬'dbo'而發生的。將dbo更改爲有效的登錄SID(如sa)將修復它。

如果這不能解決它,那麼你需要追蹤消息的去向。如果他們留在sys.transmission_queue中,那麼你必須檢查transmission_status。如果他們到達目標隊列但未激活,請檢查ERRORLOG。如果它們消失了,這意味着你做了fire-and-forget(發送之後立即結束),因此您將刪除指示原因的錯誤消息。這篇文章Troubleshooting Dialogs包含更多提示在哪裏看。

最後但並非最不重要的,請嘗試使用ssbdiagnose.exe

+0

雷木思像往常一樣,在黑暗中拍攝'擊中靶心'。 我正在使用'火和忘記',我現在正在補救。 我認爲這是您在過去幾年中第三次直接幫助我使用Service Broker,我認爲您應該獲得某種互聯網奧斯卡。 =) – roryok 2010-05-28 21:16:16

+0

你剛剛救了我的一天! – Manu 2013-02-05 14:26:24

5

除了Remus的回答,您可能還想檢查還原的數據庫的BrokerEnabled屬性。無論何時恢復數據庫,恢復的數據庫的BrokerEnabled屬性都設置爲False。基於這個原因,什麼都不會進入你的隊列。爲了解決這個問題:

  • 右鍵點擊restoredDB在SSMS>轉到「屬性」>「選項」> 向下滾動到「服務代理」組並驗證了「代理 啓用」屬性的值。如果它設置爲False,則將其更改爲True,並且此 應解決您的問題。
相關問題