현재 사용하고 있는 데이터베이스에서 어느 계정이 어떤 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 프로파일러로 조회하는 것이 맞는 것 같다.
반응형
'Database > RDBMS' 카테고리의 다른 글
[MSSQL] TRUNCATE vs DELETE 차이점 (0) | 2021.11.23 |
---|---|
[MSSQL] 프로시저 전체 삭제 쿼리 (0) | 2021.11.17 |
[MSSQL] DB에 접속한 사용자 수 조회 (0) | 2021.11.17 |
[MSSQL] DB 접속자 정보 조회 (0) | 2021.11.17 |
[MSSQL] SP 마지막 호출 시간 조회 (0) | 2021.11.17 |
댓글