티스토리 뷰

개발

MSSQL 쿼리 이력 조회방법

마크랩 2017. 1. 12. 16:28

간혹 MS SQL Server를 운영하다보면 이제껏 실행된 쿼리 이력을 알고 싶을때가 있더라

사실 무슨 쿼리를 썻지? 보단 뭔 쿼리를 써서 DB가 망가졌지를 찾는데 쓰이긴 하지만...


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


위와 같이 쿼리를 실행하면,  이제껏 실행했던 쿼리를 DB 테이블 형태로 조회할 수 있다.


ex)


DBName 

SchemaName 

SPName 

total_elapsed_time 

creation_time 

last_execution_time 

 text

TestDB 

dbo 

spGetUserName 

122888 

2017-01-12. 

2017-01-12

CRTEATE PROCEDURE.... 

master

null 

null 

3000 

2017-01-12

2017-01-12

SELECT * FROM... 



단, 휘발성 데이터로 이제껏 실행됫던 모든 쿼리를 조회해주진 못하며

Microsoft SQL Server Management Studio 에서 직.접. 실행했던 쿼리들만 보여준다.


 - 어플리케이션에서 실행됫던 쿼리는 조회 안됨

 - 해당 SQL Studio 에서 실행했던 쿼리가 아닌 쿼리는 조회 안됨

 - 오래되어 히스토리에서 지워진 쿼리 또한 조회 안됨 (정확한 시점은 모르겟다...)


어느 정도 참고 이력으로만 사용하고 어플리케이션딴에서 실행되는 쿼리를 찾기위함이라면

[SQL Server 프로파일러] 를 통해 확인하는게 더 좋다.


참고 사이트:

 - [MSSQL2008] management studio 로 실행한 쿼리 기록 보기

댓글