Sql server 当状态为0时,从队列中删除所有消息
我有一个包含许多状态为0的消息的队列。队列已打开保留,对话未正确结束。我想把那些留言清除掉 Receive无法获取状态为0的消息,因此我不能简单地在队列上循环,接收消息并在继续时结束对话。是否有任何方法可以在不删除和重新创建队列的情况下删除这些消息Sql server 当状态为0时,从队列中删除所有消息,sql-server,service-broker,Sql Server,Service Broker,我有一个包含许多状态为0的消息的队列。队列已打开保留,对话未正确结束。我想把那些留言清除掉 Receive无法获取状态为0的消息,因此我不能简单地在队列上循环,接收消息并在继续时结束对话。是否有任何方法可以在不删除和重新创建队列的情况下删除这些消息 ALTER QUEUE ... WITH RETENTION = OFF; 状态为0的邮件是已接收并正在保留的邮件。发生这种情况的原因是授权管理员出于任何目的启用了队列保留。见: 队列中准备接收的消息的状态为1。RECEIVE语句返回状态为1的消息
ALTER QUEUE ... WITH RETENTION = OFF;
状态为0的邮件是已接收并正在保留的邮件。发生这种情况的原因是授权管理员出于任何目的启用了队列保留。见:
队列中准备接收的消息的状态为1。RECEIVE语句返回状态为1的消息。RECEIVE语句返回消息后,它将状态设置为0,并在启用消息保留时将消息留在队列中
对不起,我应该在问题中明确指出,我理解这些消息是如何在该状态下进入队列的。我很好奇如何移除它们。我完全可以控制队列,甚至可以删除它,但我很好奇是否可以在不完全重新创建队列的情况下删除这些消息。我的答案正好解决了这个问题。关闭保留将删除邮件。顺便说一句,这些信息也可能表明您没有正确地发出结束对话。