SQL Server 특정 세션에 대한 마지막 실행 문장 확인
- Version : SQL Server 2005, 2008, 2008R2, 2012
특정 세션에서 마지막으로 실행한 쿼리를 확인하고 싶을 때 어떻게 할까?
Sys.dm_exec_sql_text 라는 DMV와 SPID 값을 이용하여 특정 세션이 마지막 실행 쿼리를 확인 할 수 있다.
SPID는 SQL Server인스턴스에서 세션을 식별할 수 있는 고유한 값이다. SPID를 확인 하는 방법은 해당 아래 스크립트 또는 SSMS에서 하단에 나타나는 정보로 확인 할 수 있다.
간혹 쿼리창이 연결된 상태에서 네트워크가 끊겻다 다시 붙는 경우 (쿼리창을 열어 둔채 서비스를 재실행 한 경우) SSMS의 하단에 나타나는 정보와 불일치 하는 경우도 있으니 스크립트로 확인 하는 방법을 권장한다.
SELECT @@SPID |
새로운 쿼리창을 실행하여 쿼리문을 작성 한다. 현재 실습에서 SPID는 57을 나타내고 있다.
다시 새로운 쿼리창을 실행하자. 현재 SPID는 58 이며 (즉 새로운 세션이다) 여기에서 SPID 57에서 마지막에 실행한 쿼리문을 확인 할 수 있다.
SELECT @@SPID GO
SELECT A.SESSION_ID, A.CONNECT_TIME, B.TEXT FROM SYS.DM_EXEC_CONNECTIONS AS A CROSS APPLY SYS.DM_EXEC_SQL_TEXT (A.MOST_RECENT_SQL_HANDLE) AS B WHERE A.MOST_RECENT_SESSION_ID = 57 |
특정 어플리케이션 또는 SQL Server를 사용하는 서비스에서 쿼리를 호출 하여 에러가 발생하였을 때 위의 방법으로 로그를 남기는 작업을 추가 한다면 어떤 쿼리가 실행 했을 때 에러가 나는지 확인 할 수 있을 것이다. 또는 현재 실행 되고 있는 쿼리를 파악할 수 있어 어느 쿼리 때문에 시스템이 영향을 받는지도 확인 할 수 있을 것이다.
강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp