본문 바로가기
Error & Fix

MSSQL LOCK 확인 및 제거방법

by wakestand 2020. 3. 19.
반응형

MSSQL에서 쿼리를 수행할 때

쿼리가 잘못된 것이 아닌데도

 

쿼리가 완료가 되지 않고

계속 돌아가는 경우가 있는데

 

이 경우는 다른 사람이 DB를 사용하고 있는 중이거나

혹은 정상적으로 종료가 되지 않았을 경우인데

이걸 DB가 락이 걸린 상태라 한다

 

먼저 LOCK을 확인하려면

 

EXEC sp_lock;

시에 조회 내역에서 mode 컬럼을 확인해보면

컬럼값이 X인 것이 보일텐데

X값이 락이 걸린 컬럼이다

 

이후 컬럼이 X값인 행의 spid 컬럼값을 봐둔 뒤에

 

dbcc inputbuffer(spid);

를 입력해 주면

해당 spid가 무슨 쿼리를 돌리고 있는지

eventinfo 컬럼에서 확인 가능하다

 

또한

EXEC sp_who spid;

를 입력한 뒤

hostname 컬럼을 확인하면

누가 쿼리를 돌리고 있는지 확인 가능하다

 

마지막으로 누군지 확인하고

강제로 종료시켜도 지장이 없는지 확인한 뒤에

 

kill spid

를 입력해 주면

해당 spid의 쿼리를 강제로 종료시키게 된다

 

정리해보자면 다음과 같다

 

EXEC sp_lock;

- 락(mode 값이 X) 걸린 쿼리 확인

- spid 값으로 누군지 식별 가능

 

dbcc inputbuffer(spid)

- spid가 돌리는 쿼리 확인

 

EXEC sp_who spid

- spid가 누군지 확인

 

kill spid

- spid가 돌리는 쿼리 강제 종료

반응형

댓글