[MSSQL] lock 걸린 쿼리 확인 및 해제
본문 바로가기
공부 (IT)/IT관련_DB

[MSSQL] lock 걸린 쿼리 확인 및 해제

by 달님’SS 2021. 8. 23.
728x90
반응형
SMALL

조회가 갑자기 느려지거나, 실행되지 않을때, 먹통이 될때 db쪽 문제인가 싶을 때  

Lock 걸린 쿼리가 있는지 확인해야하는 경우가 생기는데요.

Lock 걸린 쿼리를 확인하고, 해제하는 방법입니다.

 

 

 

1. 락(Lock) 걸린 상태인지 확인하기

SQL server에서 lock을 확인할 수 있도록 내장 함수 SP_LOCK, SP_WHO2를 제공하고 있는데요,

SP_LOCK부터 알아보겠습니다. 

 

SP_LOCK

 

EXEC SP_LOCK 을 치면 하단과 같은 내용을 확인할 수 있습니다. 

실행 결과의 Mode가 X로 되어있는 항목이 락(lock) 걸린 상태입니다.

 

[exec sp_lock]

 

SP_WHO2

 

EXEC SP_WHO2를 치면 하단과 같은 내용을 확인할 수 있습니다.

실행 결과의 BlkBy 컬럼에 값이 존재하면, 락(lock) 걸린 상태입니다.

 

[exec sp_who2]

 

 

 

2. 락(Lock) 걸린 쿼리 확인하기 

SQL server에서 제공하는 내장 함수 DBCC INPUTBUFFER를 통해 확인할 수 있습니다.

 

DBCC INPUTBUFFER ( session_id [ , request_id ])


SP_LOCK 또는 SP_WHO2를 통해 락으로 의심되는 SPID 값을 DBCC INPUTBUFFER 의 인자값으로 넣어 실행하면 됩니다.

아래의 SPID 컬럼의 1에 대해 알아보고 싶다면,

[spid 1]

 

DBCC INPUTBUFFER 1

 

이렇게 입력 후 실행하면 됩니다. 

 

 

 

3. SPID를 이용하여 락(Lock) KILL 하기

SQL server에서 제공하는 내장 함수 KILL을 사용해서 락(lock)걸린 세션을 종료 시킬 수 있습니다.  

 

KILL { session ID [ WITH STATUSONLY ] | UOW [ WITH STATUSONLY | COMMIT | ROLLBACK ] }

 

SPID 컬럼의 1이 락(lock) 걸린 상태여서 세션 종료해야하는 경우, 

KILL 1

이렇게 입력 후 실행하면 됩니다. 

 

 

 

 

728x90
반응형

'공부 (IT) > IT관련_DB' 카테고리의 다른 글

[MSSQL] 쿼리 단축키 지정하기  (0) 2021.09.09
[MSSQL] 날짜 변환표  (0) 2021.08.27
[MSSQL] 커서(Cursor) 사용법  (0) 2021.06.22
[MSSQL] char nchar / varchar nvarchar 차이점  (0) 2021.06.16
[MSSQL] 데이터 타입 변환  (0) 2021.06.01

댓글


TOP