sys.dm_broker_queue_monitors (Transact-SQL)
Aplica-se a: SQL Server
Retorna uma linha para cada monitor de fila na instância. Um monitor de fila gerencia a ativação de uma fila.
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
database_id | int | Identificador de objeto do banco de dados que contém a fila que o monitor inspeciona. É NULLABLE. |
queue_id | int | Identificador de objeto da fila que o monitor inspeciona. É NULLABLE. |
state | nvarchar(32) | Estado do monitor. É NULLABLE. Ele é um dos seguintes: INATIVO NOTIFICADO RECEIVES_OCCURRING |
last_empty_rowset_time | datetime | Última vez em que um RECEIVE da fila retornou um resultado vazio. É NULLABLE. |
last_activated_time | datetime | Última vez em que este monitor de fila ativou um procedimento armazenado. É NULLABLE. |
tasks_waiting | int | Número de sessões que estão aguardando dentro de uma instrução RECEIVE por esta fila no momento. É NULLABLE. Nota: Esse número inclui qualquer sessão que executa uma instrução de recebimento, independentemente de o monitor de fila ter iniciado a sessão. Isso ocorre se você usar WAITFOR junto com RECEIVE. Basicamente, essas tarefas estão esperando que mensagens cheguem à fila. |
Permissões
, é necessário ter permissão VIEW SERVER STATE no servidor.
Permissões do SQL Server 2022 e posteriores
É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.
Exemplos
R. Monitor de fila de status atual
Esse cenário fornece o status atual de todas as filas de mensagens.
SELECT t1.name AS [Service_Name], t3.name AS [Schema_Name], t2.name AS [Queue_Name],
CASE WHEN t4.state IS NULL THEN 'Not available'
ELSE t4.state
END AS [Queue_State],
CASE WHEN t4.tasks_waiting IS NULL THEN '--'
ELSE CONVERT(VARCHAR, t4.tasks_waiting)
END AS tasks_waiting,
CASE WHEN t4.last_activated_time IS NULL THEN '--'
ELSE CONVERT(varchar, t4.last_activated_time)
END AS last_activated_time ,
CASE WHEN t4.last_empty_rowset_time IS NULL THEN '--'
ELSE CONVERT(varchar,t4.last_empty_rowset_time)
END AS last_empty_rowset_time,
(
SELECT COUNT(*)
FROM sys.transmission_queue t6
WHERE (t6.from_service_name = t1.name) ) AS [Tran_Message_Count]
FROM sys.services t1 INNER JOIN sys.service_queues t2
ON ( t1.service_queue_id = t2.object_id )
INNER JOIN sys.schemas t3 ON ( t2.schema_id = t3.schema_id )
LEFT OUTER JOIN sys.dm_broker_queue_monitors t4
ON ( t2.object_id = t4.queue_id AND t4.database_id = DB_ID() )
INNER JOIN sys.databases t5 ON ( t5.database_id = DB_ID() );
Confira também
Exibições e funções de gerenciamento dinâmico (Transact-SQL)
Exibições de gerenciamento dinâmico relacionadas ao Service Broker (Transact-SQL)