본문 바로가기

개발

[DB] MS-SQL 동적 관리 뷰 활용 - 실행중인 프로세스 확인하기

sys.dm_exec_requests 동적 관리 뷰를 이용하여 서버에서 실행되고 있는 모든 세션들의 정보를 확인할 수 있습니다. 

사용자에게 서버에 대한 VIEW SERVER STATE 권한이 있으면 SQL Server 인스턴스에서 실행 중인 모든 세션을 볼 수 있고, 그렇지 않으면 현재 세션만 볼 수 있습니다.


SELECT r.session_id

             ,status

             ,wait_type

             ,substring(qt.text,r.statement_start_offset/2,

                           (case when r.statement_end_offset = -1

                           then len(convert(nvarchar(max), qt.text)) * 2

                           else r.statement_end_offset end - r.statement_start_offset)/2)

             as query_text   --- 현재 실행 중인 일괄 처리 또는 프로시저

             ,qt.dbid   ,qt.objectid

             ,r.cpu_time

             ,r.total_elapsed_time

             ,r.reads

             ,r.writes

             ,r.logical_reads

             ,r.scheduler_id

FROM sys.dm_exec_requests r

CROSS APPLY sys.dm_exec_sql_text(sql_handle) as qt

WHERE r.session_id > 50

ORDER BY r.scheduler_id, r.status, r.session_id;

GO