때때로 공유잠금 또는 교착상태에 빠져 SQL Server가 응답을 하지 않을 경우
다음 SP를 Master데이터 베이스에 등록한 후 확인하면 어떤부분에 Lock이 발생하였고 누가 유발했는지 확인할 수 있습니다.
간단하면서도 유용한 프로시져이니 잘 활용하면 도움이 될 겁니다.
SPID :쿼리를 실행한 프로세스 ID
Status:lock여부
LoginName : 로그인한 아이디
HostName : 쿼리를 실행한 컴퓨터명
DBNAME : Lock이 발생한 데이터베이스명
CMD : 실행한 명령문
CREATE PROC SP_BLOCK
AS
IF EXISTS (SELECT * FROM SYSPROCESSES WHERE SPID IN(SELECT BLOCKED FROM SYSPROCESSES))
SELECT SPID,BLOCKED,STATUS,LOGINAME,HOSTNAME,DBNAME = SUBSTRING(DB_NAME(DBID),1,10),CMD
FROM SYSPROCESSES
WHERE BLOCKED <> 0
OR (SPID IN(SELECT BLOCKED FROM SYSPROCESSES))
ELSE
PRINT 'NO ONE IS BLOCKED'
GO
EXEC SP_BLOCK
GO