본문 바로가기
IT/MSSQL

SP_LOCK (LOCK 조회)

by Handling 2023. 6. 27.
728x90
반응형

Microsoft SQL Sever Management Studio를 사용하다보면

 

쿼리문의 실행시간이 비정상적으로 길어지거나 요청시간이 초과하여 강제 종료되기도 합니다.

 

그런 상황이 발생했을때 확인해 볼 수 있는 방법들 중 SP_LOCK을 소개합니다.

 

1. EXEC SP_LOCK

 

 - 여기서 필요한 항목은 spid, Mode의 값이 무엇인지 확인합니다.

   Mode의 값이 X로 되어있다면 바로 그 부분이 Lock이 걸린 부분입니다.

 

2. EXEC SP_WHO [SPID], EXEC SP_WHO2 [SPID]

- LOCK이 걸린 부분의 사용자가 누구인지 확인합니다.

(다른사람이 잡아둔 LOCK이 있다면 함부로 KILL하지 말자..)

 

3. DBCC INPUTBUFFER([SPID])

- 스크립트를 조회해본다.

 

4. KILL [SPID]

- KILL해도 상관 없는 부분이라면 과감하게 KILL!

 

▶EXEC SP_LOCK에 컬럼에 있는 값이 궁금하다면 참고

컬럼명 자료형 설명
SPID SMALLINT 잠금을 요청하는 세선 ID
DBID SMALLINT 잠금이 설정된 DB ID
OBJID INT 잠금이 설정된 개체 ID
INDID SMALLINT 잠금이 설정된 인덱스 ID
TYPE NCHAR(4) 잠금 유형
RESOURCE NCHAR(32) 잠긴 리소스 식별하는 값
MODE NVARCHAR(8) 요청한 잠금 모드 상태
STATUS NVARCHAR(5) 잠금요청상태
-CNVRT : 잠금이 변환되고 있는 상태(다른 프로세스에 의한 변환 차단)
-GRANT : 잠금된 상태
-WAIT : 잠금이 차단된 상태

[참고]

https://learn.microsoft.com/ko-kr/sql/relational-databases/system-stored-procedures/sp-lock-transact-sql?view=sql-server-ver15

728x90
반응형