반응형
MS-SQL 에서 SELECT 했을 때 타임아웃에 걸려 연결이 끊기는 경우, 테이블에 락이 걸려서 문제가 되는 경우가 있다.
이런 경우 LOCK 걸린 쿼리를 조회해서 강제로 KILL 해줘야 한다.
1. LOCK 걸린 SPID 조회하기
SP_LOCK
2. MS-SQL 내장함수로 제공되는 SP_WHO2, SP_WHO3를 이용하여 ID 조회하기
SP_WHO2
SP_WHO3
실행 결과에서 BlkBy 컬럼에 값이 존재하면 LOCK 걸린 프로세스의 ID이다.
SP_WHO2가 더 보기 편하긴 한데, 가끔 제대로 조회가 안 되는 경우가 있다.
이 땐 SP_WHO3을 사용하자.
3. LOCK 걸린 SPID를 기준으로 실행되고 있는 쿼리 확인
DBCC INPUTBUFFER([SPID])
4. SPID를 기준으로 세션 종료하기
KILL [SPID]
나는 DBVER랑 Microsoft SQL Server Management Studio를 사용하는데 굳이 EXEC를 안 붙여도 조회 가능했다.
만약, 안 된다면 'EXEC 명령어' 으로 실행해보면 된다.
* DB 블록킹 상태 확인
SP_BLOCK
그리고, 권한이 없어서 KILL이 안 되는 경우가 있다.
이땐 권한을 요청하거나, USE MASTER로 사용자를 변경 후 사용한다.
반응형
댓글