본문 바로가기
DATABASE/MsSQL

[MsSQL] 현재 세션에 대한 정보들 조회하기

by DANEW 2024. 11. 10.

시스템 동적 관리뷰를 활용한 세션 정보 조회

MsSQL에 현재 붙어있는 세션들에 대한 정보를 조회하는 방법으로 시스템 동적 관리 뷰를 사용한다.

 

이런 뷰를 여러가지를 조합하여 원하는 정보를 알 수 있는데, 기본적으로 자주 사용되고 필요한 정보들을 조회하는 쿼리를 소개하도록 하겠다.

 

세션 조회

 

바로 쿼리를 설명하자면 아래와 같다.

select r.session_id, 
       r.blocking_session_id,
       r.status, 
       r.command, 
       r.wait_type,
       r.wait_time,
       s.host_name,
       s.program_name,
       s.login_name,
       c.client_net_address,
       substring(t.text, 
                 (r.statement_start_offset/2) + 1, 
                 ((case r.statement_end_offset 
                     when -1 then datalength(t.text) 
                     else r.statement_end_offset  
                    end - r.statement_start_offset)/2) + 1) as query_text, 
       t.text
  from SYS.DM_EXEC_REQUESTS r
 inner join SYS.DM_EXEC_SESSIONS s
    on r.session_id = s.session_id
 inner join SYS.DM_EXEC_CONNECTIONS c
    on r.session_id = c.session_id
 cross apply SYS.DM_EXEC_SQL_TEXT(r.sql_handle) t

 

간단하게 컬럼들에 대해서 설명하자면 아래와 같다.

 

session_id : 연결 되어있는 세션의 ID

blocking_session_id : 해당 세션의 실행을 막고있는 Lock걸려있는 세션의 ID

status : 세션의 실행 상태

command : 세션에서 실행되고 있는 커멘드 정보

wait_type : 세션의 대기상태 ( Lock 정보)

wait_time : 세션의 대기시간

host_name : 해당 세션으로 연결되어있는 host의 name

program_name : 해당 세션을 실행하고 있는 프로그램의 name

login_name : 해당 세션에 접속한 계정

client_net_address : 해당 세션에 접속한 host의 IP주소

query_text : 실행중인 쿼리 블록

text : 해당 세션에 실행한 모든 쿼리

반응형

간략하게 정리하면 이정도의 정보를 얻을 수 있는 쿼리이다.

 

시스템 동적 관리 뷰는 여러가지 뷰가 있기에 해당 쿼리의 기초적인 정보뿐아니라,

여러 뷰를 조인하여 더 자세하고 새로운 정보도 알 수 있으니 한번쯤 둘러보며 필요한 쿼리를 만드는 것을 추천한다.

 

 

Reference

 

 

시스템 동적 관리 뷰(Transact-SQL) - SQL Server

동적 관리 뷰와 함수는 서버 인스턴스 상태 모니터링, 문제 진단 및 성능 튜닝에 사용할 수 있는 서버 상태 정보를 반환합니다.

learn.microsoft.com

반응형