如何删除服务代理队列中的消息

sen*_*nna 17 sql-server queue service-broker

我想在SQL Server Management Studio中清除队列,但我不想删除整个队列中的队列内容(消息).

谢谢,塞纳

Reb*_*ell 47

为了清楚起见,只需将前两个答案(Ben和Jānis)结合起来.这对我有用:

declare @c uniqueidentifier
while(1=1)
begin
    select top 1 @c = conversation_handle from dbo.queuename
    if (@@ROWCOUNT = 0)
    break
    end conversation @c with cleanup
end
Run Code Online (Sandbox Code Playgroud)

  • 当我用(@c为null)条件更改(@@ ROWCOUNT = 0)检查时,为我工作.谢谢 (2认同)

Ben*_*hul 16

这样的事情应该有效:

while(1=1)
begin
    waitfor (
        receive top(1)
        conversation_group_id
        from dbo.yourQueue
    ), timeout 1000;

    if (@@rowcount = 0)
        break;
end
Run Code Online (Sandbox Code Playgroud)


Jān*_*nis 9

我将使用 语句结束对话(也将删除所有队列中的所有相关消息):

End Converstation @c With CleanUp
Run Code Online (Sandbox Code Playgroud)

如果你刚收到消息,那么你就会打开对话.结束对话使用CleanUp仅适用于特定情况.