sys.dm_broker_queue_monitors(Transact-SQL)
적용 대상: SQL Server
인스턴스의 각 큐 모니터에 대한 행을 반환합니다. 큐 모니터는 큐에 대한 활성화를 관리합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
database_id | int | 모니터에서 감시하는 큐를 포함하는 데이터베이스의 개체 식별자입니다. NULLABLE. |
queue_id | int | 모니터가 감시하는 큐의 개체 식별자입니다. NULLABLE. |
state | nvarchar(32) | 모니터의 상태입니다. NULLABLE. 다음 중 하나일 수 있습니다. 게으른 알림을 RECEIVES_OCCURRING |
last_empty_rowset_time | 날짜/시간 | 큐에서 RECEIVE가 마지막으로 빈 결과를 반환한 시간입니다. NULLABLE. |
last_activated_time | 날짜/시간 | 이 큐 모니터가 저장 프로시저를 마지막으로 활성화한 시간입니다. NULLABLE. |
tasks_waiting | int | 현재 이 큐에 대한 RECEIVE 문 내에서 대기 중인 세션 수입니다. NULLABLE. 참고: 이 번호에는 큐 모니터가 세션을 시작했는지 여부에 관계없이 수신 문을 실행하는 모든 세션이 포함됩니다. RECEIVE와 함께 WAITFOR를 사용하는 경우입니다. 기본적으로 이러한 작업은 메시지가 큐에 도착하기를 기다리고 있습니다. |
사용 권한
서버에 대한 VIEW SERVER STATE 권한이 필요합니다.
SQL Server 2022 이상에 대한 권한
서버에 대한 VIEW SERVER PERFORMANCE 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)