2011-11-08 43 views
3

我一直在運行一個負載測試,其中涉及Service Broker隊列過夜。發生錯誤,隊列中最終有130萬條消息。我只是想清除這些,不需要備份和記錄。麻煩的是,當我嘗試丟棄隊列時,需要半小時,然後日誌文件填滿,整個事情回滾。是否有一種快速和骯髒的方式來沖洗隊列中的所有東西?有沒有一種快捷的方法來刪除Service Broker隊列

回答

2

如果您在RECEIVE語句中省略了TOP 1子句,那麼它將接收到符合標準的所有消息,或者將其設置爲較高的數字將允許您清除可管理塊中的積壓。

訣竅將'黑洞'的消息,所以結果集不返回給客戶端。

+3

雖然這是最好的答案我已經找到了,但它仍然不是那麼快,我想。麻煩的是,無論您製作TOP n條款有多大,RECEIVE統計信息都只能獲得一次對話。 –

6

您可以一次清除所有交談下面的語句:

declare @conversationHandle uniqueidentifier 
select top 1 @conversationHandle = conversation_handle from sys.conversation_endpoints  
while @@rowcount = 1 

begin  
    end conversation @conversationHandle with cleanup  
    select top 1 @conversationHandle = conversation_handle from sys.conversation_endpoints  
end 
+0

我相信這會對我有用+1。儘管有一個小問題:你在一次對話中擁有所有消息的情況。在這種情況下,在清除單個對話之前,它可能仍然用完日誌空間。 –

相關問題