본문 바로가기
㏈ª By β┖υΕJini/MS-SQL

DB Lock 정보 확인 프로시져

by ㏈ª ☞ β┖υΕJini.κR 2007. 10. 17.

때때로 공유잠금 또는 교착상태에 빠져 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