MSSQL LOCK 처리, LOCK 쿼리 확인

sso·2023년 10월 4일
0

MSSQL

목록 보기
16/28

쿼리가 실행이 안될때는 우선적으로

1. DB LOCK 이 걸려있는지 확인

SELECT GETDATE() AS SYSDATE
, P.STATUS
, P.LAST_BATCH
, P.PROGRAM_NAME
, P.HOSTNAME
, P.SPID
, 'DBCC INPUTBUFFER(' + CONVERT(VARCHAR, P.SPID) + ')' AS LOCK_CHECK_QUERY
, P.BLOCKED
, P.CMD
, P.KPID
, P.CPU
, P.PHYSICAL_IO
, P.WAITTYPE
, P.WAITTIME
, P.LASTWAITTYPE
FROM MASTER..SYSPROCESSES P WITH(NOLOCK)
WHERE (STATUS LIKE 'RUN%'
OR WAITTIME > 0
OR BLOCKED <> 0
OR OPEN_TRAN <> 0
OR EXISTS (
SELECT 'EXISTS'
FROM MASTER..SYSPROCESSES P1 WITH(NOLOCK)
WHERE P.SPID = P1.BLOCKED
AND P1.SPID <> P1.BLOCKED
)
)
AND SPID > 50
AND SPID <> @@SPID
AND P.PROGRAM_NAME NOT LIKE 'SQL SERVER PROFILER%' -- 프로파일러 제외
AND P.LOGINAME NOT LIKE '%SYSTEM%' -- SYSTEM 로그인 제외
ORDER BY LAST_BATCH

2. EXEC SP_LOCK

MODE에 X가 되어있는 녀석 때문에 잠기는것이며 X가 된 SPID 값 확인

3. DBCC INPUTBUFFER(SPID)

SPID 입력해서 실행하면 멈춰있는 녀석의 쿼리를 확인할 수 있다!!

profile
오늘도 하나씩 해결해 나가자!

0개의 댓글