当status = 0时,从队列中删除所有消息

时间:2014-07-23 16:25:54

标签: sql-server service-broker

我有一个队列,其中包含一些状态为0的消息。队列已打开保留,并且对话未正确结束。我想把这些消息清理干净。

接收不会获得状态为0的消息,所以我不能简单地循环队列,接收消息并结束对话。有没有办法在不删除和重新创建队列的情况下删除这些消息?

1 个答案:

答案 0 :(得分:1)

ALTER QUEUE ... WITH RETENTION = OFF;

状态为0的消息是已收到并保留的消息。发生这种情况是因为授权管理员已为队列启用了保留,无论出于何种目的。见Message Retention

  

队列中准备接收的消息的状态为1. RECEIVE语句返回状态为1的消息。在RECEIVE语句返回消息后,它将状态设置为0并保留消息如果启用了邮件保留,则为队列。