MSSQL을 사용하다 보면 select를 하고 싶은데 조회 결과가 나오지 않거나 타임아웃에 걸려 커넥션이 끊어지는 경우가 잇습니다.
테이블에 락이 걸려서 이런 현상이 발생하곤 하는데요.
MSSQL의 경우 여러 사용자 중 한명이 락이 걸린 경우 역시 조회가 되지 않는다고 하네요.
락 걸린 쿼리를 조회하여 강제로 kill하는 방법에 대해 알아보겠습니다.
1. sp_lock 실행
Mode값이 X인 경우 락이 걸린 것인데 이때 spid를 확인합니다.
2. 락 걸린 쿼리 조회
dbcc inputbuffer(87)
3. spid이용하여 kill하기
kill 87
락으로 의심되는 spid 조회하기
SELECT p.status ,p.program_name ,p.hostname ,p.spid ,p.blocked ,p.kpid
,p.cpu ,p.physical_io ,p.waittype ,p.waittime ,p.lastwaittype
,p.waitresource ,p.dbid ,p.uid ,p.memusage ,p.login_time ,p.last_batch
,p.ecid ,p.open_tran ,p.sid ,p.hostprocess
,p.cmd ,p.nt_domain ,p.nt_username ,p.net_address
,p.net_library ,p.loginame ,p.context_info ,p.sql_handle
,p.stmt_start ,p.stmt_end
FROM master..sysprocesses p
WHERE (
STATUS LIKE 'run%'
OR waittime > 0
OR blocked <> 0
OR open_tran <> 0
OR EXISTS (
SELECT *
FROM master..sysprocesses p1
WHERE p.spid = p1.blocked
AND p1.spid <> p1.blocked
)
)
AND spid > 50
AND spid <> @@spid
ORDER BY CASE
WHEN STATUS LIKE 'run%'
THEN 0
ELSE 1
END
,waittime DESC
,open_tran DESC
'DB > MSSQL' 카테고리의 다른 글
"드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다." 오류 (1) | 2021.04.03 |
---|---|
설치된 MSSQL 버전 확인하기 (SQL Server) (1) | 2020.04.12 |
[MSSQL] 키워드를 컬럼명으로 사용하기 (1) | 2020.04.12 |
mssql 다국어 입력방법 (0) | 2019.06.23 |