sys.dm_broker_queue_monitors (Transact-SQL)

S’applique à :SQL Server

Retourne une ligne pour chaque moniteur de file d'attente de l'instance. Un moniteur de file d'attente gère l'activation pour une file d'attente.

Nom de la colonne Type de données Description
database_id int Identificateur d'objet de la base de données qui contient la file d'attente surveillée par le moniteur. Accepte la valeur NULL.
queue_id int Identificateur d'objet de la file d'attente surveillée par le moniteur. Accepte la valeur NULL.
state nvarchar(32) État du moniteur. Accepte la valeur NULL. Il s’agit de l’un des éléments suivants :

INACTIVE

NOTIFIED

RECEIVES_OCCURRING
last_empty_rowset_time datetime Horodatage de la dernière opération RECEIVE appliquée à la file d'attente qui a retourné un jeu de résultats vide. Accepte la valeur NULL.
last_activated_time datetime Horodatage de la dernière activation d'une procédure stockée par ce moniteur de file d'attente. Accepte la valeur NULL.
tasks_waiting int Nombre de sessions actuellement en attente dans une instruction RECEIVE relative à la file d'attente considérée. Accepte la valeur NULL.

Remarque : Ce nombre inclut toute session exécutant une instruction de réception, que le moniteur de file d’attente ait ou non démarré la session. C'est pourquoi vous utilisez WAITFOR avec RECEIVE. À la base, ces tâches attendent toutes les deux l'arrivée de messages dans la file d'attente.

Autorisations

requièrent l'autorisation VIEW SERVER STATE sur le serveur.

Autorisations pour SQL Server 2022 et versions ultérieures

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Exemples

R. Moniteur d'état des files d'attente

Ce scénario fournit le statut actuel de toutes les files d'attente de messages.

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

Voir aussi

Fonctions et vues de gestion dynamique (Transact-SQL)
Vues de gestion dynamique liées à Service Broker (Transact-SQL)