как удалить сообщения в очереди Service broker
Я хотел бы очистить свою очередь в SQL Server Management Studio, но я не хочу удалять всю очередь только содержимое в очереди (сообщения).
спасибо, Сенна!--1-->
5 ответов
что-то вроде этого должно работать:
while(1=1)
begin
waitfor (
receive top(1)
conversation_group_id
from dbo.yourQueue;
if (@@rowcount = 0)
begin
break;
end
), timeout 1000;
end
просто объединение двух предыдущих ответов (Бен и Янис) для ясности. Это сработало для меня:
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
Я хотел бы использовать конец разговора (Это также удалит все связанные сообщения из всех очередей) с помощью оператора:
End Converstation @c With CleanUp
Если вы просто получаете сообщение, то вы оставляете разговор открытым. Конец разговора с CleanUp предназначен только для определенных ситуаций.
Если вы используете SQL Server (начиная с 2008 года), вы можете использовать RECEIVE
WHILE (0=0)
BEGIN
RECEIVE * FROM Dbo.YourQueue
END
while(1=1)
begin
waitfor (
receive top(1)
conversation_group_id
from kartokumaqueue2), timeout 1000;
if(@@ROWCOUNT = 0) break;
end