Consultando filas
Às vezes pode ser necessário inspecionar o conteúdo de uma fila como um todo. Você pode querer saber quantas mensagens a fila contém ou assegurar que o aplicativo processou todas as mensagens de um serviço que está prestes a se tornar off-line. Você pode precisar descobrir por que mensagens não estão sendo processadas por um aplicativo.
Para obter essas informações, use o nome da fila como a tabela de origem de uma instrução SELECT. Uma instrução SELECT em uma fila tem o mesmo formato que uma instrução SELECT em uma exibição ou uma tabela.
Observação |
---|
O Agente de Serviços é projetado para permitir que vários leitores de fila recebam mensagens eficientemente de uma fila. Porém, uma instrução SELECT em uma fila pode causar bloqueio. Ao usar uma instrução SELECT em uma fila, especifique a dica NOLOCK para evitar o bloqueio de aplicativos que usam a fila. |
Para uma descrição das colunas em uma fila, consulte CREATE QUEUE (Transact-SQL).
A seguir, está um instrução SELECT de exemplo para descobrir o número de mensagens na fila ExpenseQueue:
SELECT COUNT(*) FROM dbo.ExpenseQueue WITH (NOLOCK) ;
A instrução SELECT a seguir permite que o administrador saiba se a fila ExpenseQueue contém alguma mensagem para o serviço //Adventure-Works.com/AccountsPayable/Expenses:
IF EXISTS(SELECT * FROM dbo.ExpenseQueue WITH (NOLOCK) WHERE
service_name = '//Adventure-Works.com/AccountsPayable/Expenses')
PRINT 'The queue contains messages for ' +
'//Adventure-Works.com/AccountsPayable/Expenses'
ELSE
PRINT 'The queue does not contain messages for ' +
'//Adventure-Works.com/AccountsPayable/Expenses' ;
O Agente de Serviços gerencia atualizações em filas. Apesar do nome de uma fila poder ser usado em lugar de um nome de tabela em uma instrução SELECT, uma fila não pode ser destino de uma instrução INSERT, UPDATE, DELETE ou TRUNCATE. SQL Server não permite que os usuários criem índices em filas.