Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Devolve uma linha para cada monitor de fila na instância. Um monitor de fila gere a ativação de uma fila.
| Nome da coluna | Tipo de dados | Anulável | Description |
|---|---|---|---|
database_id |
int | Yes | Identificador de objeto para a base de dados que contém a fila que o monitor observa. |
queue_id |
int | Yes | Identificador de objeto para a fila que o monitor observa. |
state |
nvarchar(32) | Yes | Estado do monitor. Este valor é uma das seguintes opções:INACTIVENOTIFIEDRECEIVES_OCCURRING |
last_empty_rowset_time |
datetime | Yes | Da última vez, um a RECEIVE da fila devolveu um resultado vazio. |
last_activated_time |
datetime | Yes | Da última vez que este monitor de fila ativou um procedimento armazenado. |
tasks_waiting |
int | Yes | Número de sessões que estão atualmente à espera dentro de uma RECEIVE instrução para esta fila.Nota: Este valor inclui qualquer sessão que execute uma instrução recebida, independentemente de o monitor da fila iniciar a sessão ou não. É para quando usas WAITFOR juntamente com RECEIVE. Ou seja, estas tarefas estão à espera que as mensagens cheguem à fila. |
Permissions
O SQL Server 2019 (15.x) e versões anteriores exigem permissão de VIEW SERVER STATE no servidor.
O SQL Server 2022 (16.x) e versões posteriores exigem VIEW SERVER PERFORMANCE STATE permissão no servidor.
Examples
A. Monitor de fila de estado atual
Este cenário fornece o estado atual de todas as filas de mensagens.
SELECT DB_NAME() AS [Database_Name],
s.[name] AS [Service_Name],
sch.[name] AS [Schema_Name],
q.[name] AS [Queue_Name],
ISNULL(m.[state], N'Not available') AS [Queue_State],
m.tasks_waiting,
m.last_activated_time,
m.last_empty_rowset_time,
(SELECT COUNT(1)
FROM sys.transmission_queue AS t6
WHERE t6.from_service_name = s.[name]) AS Tran_Message_Count
FROM sys.services AS s
INNER JOIN sys.databases AS d
ON d.database_id = DB_ID()
INNER JOIN sys.service_queues AS q
ON s.service_queue_id = q.[object_id]
INNER JOIN sys.schemas AS sch
ON q.[schema_id] = sch.[schema_id]
LEFT OUTER JOIN sys.dm_broker_queue_monitors AS m
ON q.[object_id] = m.queue_id
AND m.database_id = d.database_id;