sys.dm_broker_queue_monitors (Transact-SQL)
Si applica a: SQL Server
Restituisce una riga per ogni monitoraggio di coda nell'istanza. Un monitoraggio di coda gestisce l'attivazione di una coda.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
database_id |
int | Identificatore di oggetto per il database contenente la coda controllata dal monitoraggio. Ammette valori Null. |
queue_id |
int | Identificatore di oggetto per la coda controllata dal monitoraggio. Ammette valori Null. |
state |
nvarchar(32) | Stato del server di monitoraggio. Ammette valori Null. Questo valore è una delle opzioni seguenti:INACTIVE NOTIFIED RECEIVES_OCCURRING |
last_empty_rowset_time |
datetime | Ultima volta che un oggetto RECEIVE dalla coda ha restituito un risultato vuoto. Ammette valori Null. |
last_activated_time |
datetime | Ultima volta in cui il monitoraggio di coda ha attivato una stored procedure. Ammette valori Null. |
tasks_waiting |
int | Numero di sessioni attualmente in attesa all'interno di un'istruzione RECEIVE per questa coda. Ammette valori Null.Nota: questo numero include qualsiasi sessione che esegue un'istruzione di ricezione, indipendentemente dal fatto che il monitoraggio della coda abbia avviato la sessione. Questo vale per quando si usa WAITFOR insieme a RECEIVE . In altre parole, queste attività sono in attesa dell'arrivo dei messaggi nella coda. |
Autorizzazioni
SQL Server 2019 (15.x) e versioni precedenti richiedono VIEW SERVER STATE
l'autorizzazione per il server.
SQL Server 2022 (16.x) e versioni successive richiedono VIEW SERVER PERFORMANCE STATE
l'autorizzazione per il server.
Esempi
R. Stato corrente del monitoraggio di coda
Nello scenario seguente viene restituito lo stato corrente di tutte le code di messaggi.
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;