Search

2016년 1월 13일 수요일

[Database] [MSSQL] 데이터베이스 내에 걸린 Lock, Blocking 상세 정보 확인하기.

* 지난번 Lock확인하기의 내용에 이어서 진행한다.
  참조 : http://oskardevelopers.blogspot.kr/2015/12/database-mssql-lock_8.html

* sp_lock 명령어를 통해 어느 spid에서 lock이 발생되는지를 확인했다면, 어떤 쿼리를 요청했는지도 알아야 할 필요가 있다.
  이때는, 아래의 @spid에다가 문제가 되는 spid를 넣어 명령어를 실행시키면 된다.

-- 00에다가 lock이 잡힌 spid를 넣자.
declare @spid int = 00

dbcc inputbuffer(@spid)
exec sp_who @spid
exec sp_who2 @spid

-- Lock이 잡힌 세션에 대한 상세 정보
SELECT *
FROM sys.sysprocesses
CROSS APPLY sys.dm_exec_sql_text (sql_handle) as sql_text
WHERE spid = @spid

-- Blocking으로, 대기중인 세션들에 대한 상세 정보 
SELECT *
FROM sys.sysprocesses
CROSS APPLY sys.dm_exec_sql_text (sql_handle) as sql_text
WHERE blocked > 0 



댓글 없음:

댓글 쓰기