sys.dm_broker_queue_monitors (Transact-SQL)

Gibt eine Zeile für jede Warteschlangenüberwachung in der Instanz zurück. Über die Warteschlangenüberwachung wird die Aktivierung einer Warteschlange verwaltet.

Spaltenname

Datentyp

Beschreibung

database_id

int

Objekt-ID für die Datenbank mit der Warteschlange, die überwacht wird. NULL ist zulässig.

queue_id

int

Objekt-ID der überwachten Warteschlange. NULL ist zulässig.

state

nvarchar(32)

Der Status der Überwachung. NULL ist zulässig. Folgende Angaben sind möglich:

  • INACTIVE

  • NOTIFIED

  • RECEIVES_OCCURRING

last_empty_rowset_time

datetime

Zeitpunkt, zu dem bei einer RECEIVE-Anweisung aus der Warteschlange zuletzt ein leeres Ergebnis zurückgegeben wurde. NULL ist zulässig.

last_activated_time

datetime

Zeitpunkt, zu dem die Warteschlangenüberwachung zuletzt eine gespeicherte Prozedur aktiviert hat. NULL ist zulässig.

tasks_waiting

int

Anzahl von Sitzungen, die zurzeit in einer RECEIVE-Anweisung auf diese Warteschlange warten. NULL ist zulässig.

HinweisHinweis
Diese Anzahl schließt alle Sitzungen ein, die eine RECEIVE-Anweisung ausführen, unabhängig davon, ob die Sitzung von der Warteschlangenüberwachung gestartet wurde. Dies gilt beim Verwenden von WAITFOR zusammen mit RECEIVE. Im Wesentlichen warten diese Tasks darauf, dass Nachrichten in der Warteschlange eintreffen.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

Beispiele

A. Aktueller Status der Warteschlangenüberwachung

In diesem Szenario wird der aktuelle Status aller Nachrichtenwarteschlangen wiedergegeben.

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() )