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



我一直在运行一个涉及Service Broker队列的负载测试。由于出了问题,队列中最终出现了130万条消息。我只想清除这些,不需要备份,也不需要日志记录。问题是,当我试图删除队列时,它需要半个小时,然后日志文件填满,整个事情回滚。是否有一种快速而肮脏的方法来清除队列中的所有内容?

您可以使用以下语句一次清除所有对话:

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

如果在RECEIVE语句中省略TOP 1子句,那么它将接收符合标准的所有消息,或者将其设置为一个高的数字将允许您在可管理的块中清除积压。

诀窍是对消息进行"黑洞"处理,这样结果集就不会返回给客户端。

最新更新