1. 락 확인 (Mode) 부분에 X 가 락이 걸린 spid 이다.
exec sp_lock
Mode의 상세 설명
- S(shared lock) 공유잠금 : select문때 데이터를 동시에 읽을 때 걸리는 형태, 동시에 select 가능
- U(Upate lock) 업데이트 잠금 : 업데이트 할 수 있는 리소스에 사용, 여러 사용자가 업데이트 할 때 발생하는
교착 상태 방지.
- X(Exclusive lock) 베타잠금 : 데이터의 Insert / Update / Delete 시에 사용, 동시에 불가능 호환 불가, 동시에
같은행 변경 불가.
- IS : 의도공유
- IU : 의도 업데이트
- IX : 독점의도
- Bu(Bulk Update lock) 대량 업데이트 잠금 : 데이터를 데이블로 대량 복사하는 경우와 Tablock 힌트가
지정된 경우 사용
2. Spid 의 값을 넣어주면 현재 어떤 쿼리인지 확인해준다.
spid 값 51 일경우
dbcc inputbuffer(51)
3. Lock 를 킬해준다.
Kill 51
4. 자세한정보 확인
exec sp_who2 51
5. Lock 의심되는 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_endFROM master..sysprocesses pWHERE ( 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 <> @@spidORDER BY CASE WHEN STATUS LIKE 'run%' THEN 0 ELSE 1 END ,waittime DESC ,open_tran DESC
Rss Feed