Database/RDBMS

[MSSQL] SP 쿼리 실행 이력 조회 쿼리

JeongKyun 2021. 11. 17.
반응형

현재 사용하고 있는 데이터베이스에서 어느 계정이 어떤 SP와 쿼리가 실행됐는지 알고싶을때 사용하는 쿼리이다.

 

나같은 경우는 어떤 직접쿼리와 프로시저에 인해서 DB 오류가 떳는지 찾고싶을 때 간혹 사용한다.

(큰 이슈나 정확한 쿼리를 보고싶다면 프로파일러로 확인 권장)

 

Query)

SELECT Db_name(st.dbid)                      DBName,
       Object_schema_name(objectid, st.dbid) SchemaName,
       Object_name(objectid, st.dbid)        SPName,
       qs.total_elapsed_time,
       creation_time,
       last_execution_time,
       text
FROM   sys.dm_exec_query_stats qs
       CROSS apply sys.Dm_exec_sql_text(qs.plan_handle)st
       JOIN sys.dm_exec_cached_plans cp
         ON qs.plan_handle = cp.plan_handle

위의 조회 컬럼 내용은 아래와 같다.

 

=============================

dbname : 데이터베이스 이름

SchemaName :  스키마 이름 (ex : dbo)

SPName : 프로시저 이름

total_elapsed_time : 전체 경과 시간

creation_time : 만든 날짜

last_excution_time : 마지막 실행 시간

text : 실행 쿼리문

=============================

 

위의 쿼리의 특징은

1. 애플리케이션에서 실행됐던 쿼리는 조회가 안된다.

2. Sql studio에서 실행된 쿼리가 아니라면 조회가 안됨.

3. 휘발성 데이터이다. ( 오래된 데이터는 조회 안됨)

 

특징이 있기에 정확한 이력 조회를 하고싶다면 Sql 프로파일러로 조회하는 것이 맞는 것 같다.

댓글

💲 많이 본 글