Sql-Server

啟用時服務代理未收到消息

  • May 30, 2018

由於我對服務代理缺乏了解,我很難在其中一個數據庫中對服務代理進行故障排除。

  1. 最初,服務代理以某種方式在此數據庫上被禁用,該數據庫使用對話處理消息來執行 ssis 包。仍在徘徊它是如何被禁用的並且沒有足夠的資訊來查找。請建議在哪裡看
  2. 當我使用它啟用它時ALTER DATABASE DBSERB set NEW_BROKER WITH ROLLBACK IMMEDIATE,它啟用了 SB,但似乎清除了我在其中看到的消息sys.conversation_endpoints。但問題是我沒有看到這些消息即將到來或開始。所以我回到了我原來的服務經紀人不工作的問題。我該如何排除故障並使其正常工作

在故障排除時添加更多資訊

select * from sys.conversation_endpoints顯示 0 行,而對於 diff env 中的類似數據庫,我得到幾乎 5-6 行。不知道這是什麼意思

要回答您的問題:

  1. 檢查預設跟踪以查看它何時被禁用
  2. 當您使用 NEW_BROKER 更改數據庫時,它造成的損害比您想像的要大

如果您使用服務名稱和服務實例創建了任何路由,那麼它將變得無效,因為路由服務實例值不再反映目標 service_broker_guid。它沒有說在一個數據庫上執行 NEW_BROKER,該數據庫確實有跨越實例(甚至是同一對話中的數據庫)的正在執行的對話,這些對話將有一半“被核彈”,而另一半將擱淺,無法取得任何進展(必須使用 END … WITH CLEANUP 進行清理,否則其他數據庫也必須是 NEW_BROKER-ed)。

不幸的是,您最好的選擇是從頭開始重新設置服務代理。

引用自:https://dba.stackexchange.com/questions/208290