是否有一种快速删除Service Broker队列的方法

时间:2011-11-08 10:59:03

标签: sql-server sql-server-2008-r2 service-broker

我一直在运行一个涉及Service Broker队列的负载测试。出了点问题,队列最终收到了130万条消息。我只想清除这些,没有备份,也不需要记录。麻烦的是,当我尝试删除队列时,它花了半个小时,然后日志文件填满,整个事情回滚。是否有一种快速而肮脏的方式将所有东西都冲出队列?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

如果省略RECEIVE语句中的TOP 1子句,则它将接收符合条件的所有消息,或者将其设置为较大的数字将允许您清除可管理块中的积压。

诀窍是“黑洞”消息,因此结果集不会返回给客户端。