Udostępnij za pośrednictwem


sys.dm_broker_queue_monitors (Transact-SQL)

Zwraca wiersz dla każdego monitora kolejki w wystąpieniu.Monitorowanie kolejki zarządza aktywacja dla kolejki.

Nazwa kolumna

Typ danych

Description

database_id

int

Identyfikator obiektu bazy danych, która zawiera kolejki, która oczekuje na monitorze.NIEWYMAGANYM.

queue_id

int

Identyfikator obiektu dla kolejki, który oczekuje na monitorze.NIEWYMAGANYM.

Stan

nvarchar(32)

Stan monitora.NIEWYMAGANYM.Jest to jedna z następujących czynności:

  • NIEAKTYWNE

  • POWIADOMIENIA

  • RECEIVES_OCCURRING

last_empty_rowset_time

datetime

Ostatni czas czy przyjęcie z kolejki zwrócone wynik puste.NIEWYMAGANYM.

last_activated_time

datetime

Ostatni czas że ten monitor kolejki aktywować procedury przechowywanej.NIEWYMAGANYM.

tasks_waiting

int

Liczba sesji, które oczekują w ramach instrukcja przyjęcie dla tej kolejki.NIEWYMAGANYM.

NoteNote:
Liczba ta obejmuje wszystkich sesja wykonywania instrukcja odbierania, niezależnie od tego, czy monitor kolejki uruchomić sesja.Jest to, jeśli używasz WAITFOR wraz z przyjęcie.Zasadniczo zadania te oczekują na komunikaty przychodzące do kolejki.

Uprawnienia

Wymaga uprawnienia VIEW SERVER STATE na serwerze.

Przykłady

A.Bieżący stan kolejki monitor

W tym scenariuszu podano bieżący stan wszystkich kolejek wiadomości.

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