sys.dm_broker_queue_monitors(Transact-SQL)

인스턴스의 큐 모니터에 대한 행을 반환합니다. 한 큐 모니터에 대해 한 행을 반환합니다 큐 모니터는 큐 활성화를 관리합니다.

열 이름

데이터 형식

설명

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 권한이 필요합니다.

1.현재 상태 큐 모니터

이 시나리오에서는 모든 메시지 큐의 현재 상태를 제공합니다.

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)