Sql server 有没有快速删除ServiceBroker队列的方法

Sql server 有没有快速删除ServiceBroker队列的方法,sql-server,sql-server-2008-r2,service-broker,Sql Server,Sql Server 2008 R2,Service Broker,我已经运行了一个负载测试,其中包括一个ServiceBroker队列。出了点问题,队列中有130万条消息。我只想清除这些,不需要备份和日志记录。问题是,当我试图放下队列时,需要半个小时,然后日志文件就满了,整个过程就会回滚。是否有一种快速而肮脏的方法来清除队列中的所有内容?如果您省略了RECEIVE语句中的TOP 1子句,那么它将接收所有符合条件的消息,或者将其设置为一个高数字将允许您清除可管理块中的积压 诀窍是“隐藏”消息,这样结果集就不会返回给客户端 您可以使用以下语句立即清除所有对话: d

我已经运行了一个负载测试,其中包括一个ServiceBroker队列。出了点问题,队列中有130万条消息。我只想清除这些,不需要备份和日志记录。问题是,当我试图放下队列时,需要半个小时,然后日志文件就满了,整个过程就会回滚。是否有一种快速而肮脏的方法来清除队列中的所有内容?

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


诀窍是“隐藏”消息,这样结果集就不会返回给客户端

您可以使用以下语句立即清除所有对话:

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

虽然这是我找到的最好的答案,但它仍然没有我想要的那么快。问题是,无论你把前n个从句做得多大,接收语句一次只能进行一次对话。我相信这对我+1有效。不过,这里有一个难题:在一次对话中,你有所有的信息。在这种情况下,在清除单个对话之前,日志空间可能仍然不足。