次の方法で共有


sys.dm_broker_queue_monitors (Transact-SQL)

インスタンス内のキュー モニターごとに 1 行のデータを返します。 キュー モニターは、キューのアクティブ化を管理します。

列名

データ型

説明

database_id

int

モニターで監視するキューが含まれるデータベースのオブジェクト識別子。 NULL 値は許可されます。

queue_id

int

モニターで監視するキューのオブジェクト識別子。 NULL 値は許可されます。

state

nvarchar(32)

監視の状態。 NULL 値は許可されます。 次のいずれかになります。

  • INACTIVE

  • NOTIFIED

  • RECEIVES_OCCURRING

last_empty_rowset_time

datetime

キューからの RECEIVE で、空の結果が返された前回の時刻。 NULL 値は許可されます。

last_activated_time

datetime

キュー モニターによってストアド プロシージャがアクティブ化された前回の時刻。 NULL 値は許可されます。

tasks_waiting

int

キューの RECEIVE ステートメント内で現在待機中のセッション数。 NULL 値は許可されます。

注意

この数には、キュー モニターによって開始されたかどうかに関係なく、RECEIVE ステートメントを実行するセッションが含まれます。 これは、RECEIVE と共に WAITFOR を使用する場合に該当します。 基本的に、これらのタスクはキューでメッセージが受信されるのを待機しています。

権限

サーバーに対する VIEW SERVER STATE 権限が必要です。

使用例

A. キュー モニターで現在の状態を監視する

次の例では、すべてのメッセージ キューの現在の状態が提供されます。

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

関連項目

参照

動的管理ビューおよび関数 (Transact-SQL)

Service Broker 関連の動的管理ビュー (Transact-SQL)