본문 바로가기
컴퓨터관련/MS-SQL

MS-SQL에서 쿼리 이력 조회하기

by 빛과 어둠사이 2020. 2. 26.
728x90
반응형
SMALL

이번에는 MSSQL에서의

쿼리 이력을 조회하는 방법을

정리해보고자 합니다.


DB를 쓰다 보면

무슨 쿼리를 돌렸는지,

무슨 쿼리가 실행이 되었는지

확인이 필요할 때가 있습니다.


이럴 때,

확인할 수 있는 방법입니다.

SQL SERVER에서 제공하는 것으로

시스템 테이블을 이용하여

확인하는 것입니다.


확인하는 방법은

다음과 같습니다.

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
ORDER BY last_execution_time desc

위의 쿼리를 돌려주시면

동작했던 쿼리의 내용을 확인할 수 있습니다.


결과는 다음과 같습니다.



위처럼 결과가 나오게 됩니다.

이를 가지고 무슨 쿼리가 동작되었는지

확인을 해주시면 되십니다.




단, 이것에는 단점은 있습니다.

우선 해당 프로그램에서 동작된

쿼리만 나온다고 합니다.

하지만 제가 돌리지 않은 쿼리가

여기서 나오는걸 보았습니다.


그렇다면, SSMS, 토드 등에서 여러 사람이

돌린 것들이 다 나온 것인지

아니면 어플리케이션에서 돌린 것까지

나오는 것인지는

정확하게는 모르겠어요.


다만, 공식적으로는 안된다고 하니

이곳에 안나왔다고 해서

무조건 실행이 안된 쿼리라고 할 수는 없습니다.



또한, 휘발성 데이터입니다.

그렇기 때문에

너무 오래된 쿼리는 확인이 안될 수 있습니다.

쿼리의 보유기간은 저도 정확하게는 모르겠네요.


아무튼 오래는 안되니

참고해주시면 되실 것 같습니다.




정확하게 확인을 하고 싶다면

SQL SERVER 프로파일러는 이용해서

확인을 해보는 것을 추천합니다.


다만, 이것은 서버에도 부하가 많이 갑니다.

그렇기 때문에

그렇게 추천을 하지는 않습니다.

꼭 필요한 상황에서 꼭 필요한 시점에서만

쿼리를 프로파일러로 남겨서

확인을 해주시면 됩니다.





이상으 MSSQL에서의 쿼리 이력을

조회하는 방법이였습니다~


728x90
반응형
LIST