Je voudrais effacer ma file d'attente dans SQL Server Management Studio, mais je ne veux pas supprimer toute la file d'attente uniquement le contenu de la file d'attente (les messages).
Quelque chose comme ça devrait fonctionner:
while(1=1)
begin
waitfor (
receive top(1)
conversation_group_id
from dbo.yourQueue
), timeout 1000;
if (@@rowcount = 0)
break;
end
Il suffit de combiner les deux réponses précédentes (par Ben et Jānis) pour plus de clarté. Cela a fonctionné pour moi:
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
J'utiliserais mettre fin à la conversation (qui supprimera également tous les messages associés de toutes les files d'attente) en utilisant l'instruction:
End Converstation @c With CleanUp
si vous venez de recevoir un message, vous laissez la conversation ouverte. Mettre fin à la conversation avec CleanUp est uniquement pour des situations spécifiques.
Si vous utilisez SQL Server (à partir de 2008), vous pouvez utiliser RECEIVE
WHILE (0=0)
BEGIN
RECEIVE * FROM dbo.YourQueue;
IF (@@ROWCOUNT = 0) BREAK;
END