SQL Server/SQL Server Tip

SQL Server 특정 세션에 대한 마지막 실행 문장 확인

SungWookKang 2015. 7. 20. 09:40
반응형

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를 사용하는 서비스에서 쿼리를 호출 하여 에러가 발생하였을 때 위의 방법으로 로그를 남기는 작업을 추가 한다면 어떤 쿼리가 실행 했을 때 에러가 나는지 확인 할 수 있을 것이다. 또는 현재 실행 되고 있는 쿼리를 파악할 수 있어 어느 쿼리 때문에 시스템이 영향을 받는지도 확인 할 수 있을 것이다.

 

2013-01-15 / 강성욱 / http://sqlmvp.kr

 

반응형