MSSQL Lock 확인 및 처리 방법

2014.03.05 20:41

소울 조회 수:21806

1.  sp_lock 실행
  Lock 내용 확인. Mode가 X 인 것들을 확인하고, spid 를 기억해 둔다.

  보통 spid 가 여러개 중복되어 출력되는 경우가 많다.
  예) exec sp_lock


2. dbcc inputbuffer(spid)
  클라이언트에서 MSSQL로 보낸 최종 명령문을 표시한다.

  1번에서 Mode 가 X 인 것의 spid를 입력하면 해당 내용이 출력된다.
  예) dbcc iniputbuffer(60)

 

3. sp_who spid

  1번에서 확인된 spid 를 입력하면 관련 정보를 표시해 준다.

  예) exec sp_who 60

 

4. kill spid

  Lock을 확인했으면 해당 spid 를 입력하여 해당 프로세스를 끝낸다.

  예) kill 60

 

참고> 위 명령어는 모두 MS SQL Server Management Studio 에서 사용한다.

         만약 자기가 Lock을 발생했을 경우, 새 쿼리 창을 띄운 후 위 명령을 실행해야 6115 오류가

         발생하지 않는다.


----------------------------------------------------------------------------------------


[퍼옴]

SP_LOCK 이라는 저장프로시저를 통해 

 

MSSQL Server Management Studio 에서 EXEC SP_LOCK 을 실행한다.

 

 

 

 

필요한건 Mode 와 spid 인데, Mode가 X로 표시된게 Lock이 걸린 세션이며, spid 값을 통해 처리가 가능하다.

 

세션을 강제 종료시키는 방법은 kill 188 (spid) 이지만,

 

또 발생시킬수 있을수 있으니 누가 소유자 인지 확인을 하고 종료를 시켜야 한다.

 

exec sp_who2 spid로 누가 소유자 인지 확인하고,

 

dbcc inputbutter(spid)  <-- 어떤 쿼리가 lock 걸리게 하였는지 확인할수 있다.

이와 같이 입력하여 eventinfo를 확인해 본다. 

 

sp_block 을 통해 lock된 세션이 있는지도 확인해본다