Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Devuelve una fila por cada monitor de cola en la instancia. Un monitor de cola administra la activación de una cola.
| Nombre de la columna | Tipo de datos | Anulable | Descripción |
|---|---|---|---|
database_id |
int | Sí | Identificador del objeto de la base de datos que contiene la cola que supervisa el monitor. |
queue_id |
int | Sí | Identificador del objeto de la cola que supervisa el monitor. |
state |
nvarchar(32) | Sí | Estado del monitor. Este valor es una de las siguientes opciones:INACTIVENOTIFIEDRECEIVES_OCCURRING |
last_empty_rowset_time |
datetime | Sí | La última vez que un RECEIVE elemento de la cola devolvió un resultado vacío. |
last_activated_time |
datetime | Sí | Última vez que este monitor de cola activó un procedimiento almacenado. |
tasks_waiting |
int | Sí | Número de sesiones que están esperando actualmente dentro de una RECEIVE instrucción para esta cola.Nota: Este valor incluye cualquier sesión que ejecute una instrucción de recepción, independientemente de si el monitor de cola inició la sesión. Es para cuando usas WAITFOR junto con RECEIVE. En otras palabras, estas tareas están esperando que los mensajes lleguen a la cola. |
Permisos
SQL Server 2019 (15.x) y versiones anteriores requieren VIEW SERVER STATE permiso en el servidor.
SQL Server 2022 (16.x) y versiones posteriores requieren VIEW SERVER PERFORMANCE STATE permiso en el servidor.
Ejemplos
A Estado actual del monitor de cola
Este escenario proporciona el estado actual de todas las colas de mensajes.
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;