본문 바로가기
DBMS/mssql

[MS-SQL] 락(LOCK) 걸렸을 때 강제 종료(KILL)

by 어쩌다개발 2022. 1. 5.
반응형

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로 사용자를 변경 후 사용한다.

곰곰 무항생제 신선한 대란, 30구 칠갑농산 우리쌀 떡국떡, 500g, 4입 이노플리아 김상형의SQL정복 소문난명강의 ORACLE MSSQL MARIADB기반실습환경, One color | One Size, 9791162244241

반응형

댓글