Delete messages in service broker queue

前端 未结 5 513
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-24 07:31

I\'d like to clear my queue in SQL Server Management Studio, but I don\'t want to delete the whole queue just the content in the queue (the messages).

相关标签:
5条回答
  • 2020-12-24 08:17
    while(1=1)
    begin
        waitfor (
            receive top(1)
            conversation_group_id
            from kartokumaqueue2), timeout 1000;
    
            if(@@ROWCOUNT = 0) break;
    end
    
    0 讨论(0)
  • 2020-12-24 08:18

    Something like this should work:

    while(1=1)
    begin
        waitfor (
            receive top(1)
            conversation_group_id
            from dbo.yourQueue
        ), timeout 1000;
    
        if (@@rowcount = 0)
            break;
    end
    
    0 讨论(0)
  • 2020-12-24 08:27

    I would use end conversation (that will also remove all related messages from all queues) using statement:

    End Converstation @c With CleanUp
    

    if you just receive message, then you leave conversation open. End Conversation With CleanUp is for specific situations only.

    0 讨论(0)
  • 2020-12-24 08:28

    Just combining the two previous answers (by Ben and Jānis) for clarity. This worked for me:

    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
    
    0 讨论(0)
  • 2020-12-24 08:36

    If you are using SQL Server (starting with 2008) you can use RECEIVE

    WHILE (0=0)
    BEGIN
        RECEIVE * FROM dbo.YourQueue;
        IF (@@ROWCOUNT = 0) BREAK;
    END
    
    0 讨论(0)
提交回复
热议问题