안녕하세요 철사마 입니다.
DB가 문제없이 잘 돌아가면 좋겠지만 멀쩡하던 쿼리가 갑자기 느려지는 경우가 있습니다.
원인 중 하나가 LOCK이 걸려서 그런 경우가 있는데요, 현재 DB에 LOCK이 걸린 쿼리가 있는지 조회하고 해당 쿼리 실행을 종료하는 것까지 정리해 보았습니다.
일반적으로 sp_lock 실행을 하려면 실행 권한이 있어야 하는데 실행권한이 없으면 아래와 같은 오류 메시지가 발생합니다.
사용자에게 이 동작을 수행할 권한이 없습니다.
이때 자신의 계정에 VIEW SERVER STATE 권한이 필요 합니다.
grant alter server state to '권한을 줄 계정이름'
권한이 부여가 되어 스크립트를 실행할 준비가 되었다면 아래를 참고해 주세요
1. 현재 실행중안 DB의 잠금에 대한 정보를 확인합니다.
-- Lock이 걸린 SPID를 추출합니다.
-- Mode 부분이 X로 나오면 LOCK이 걸린 것입니다.
EXEC sp_lock 108
-- Mode가 X로 되어 있는 spid의 숫자를 대입합니다.
-- SPID의 소유자가 누구인지 확인합니다.
EXEC sp_who2 108
-- LOCK이 걸린 대상 스크립트가 출력됩니다.
DBCC INPUTBUFFER(108)
-- LOCK을 유발시키는 spid를 종료 시킵니다.
KILL 108
위에 설명이 되었던 sp_lock 에 대해 열 이름을 상세하게 표로 정리된 내용이 공식 microsoft 사이트에 공개되어 있어 정리하였습니다.
'개발이야기' 카테고리의 다른 글
[Unity Tip] 비쥬얼스튜디오(Visual Studio) 환경 테마 어둡게 설정하기 (0) | 2019.12.23 |
---|---|
[UNITY TIP] 유니티(Unity)에서 비쥬얼 스튜디오(Visual Studio) C# 서식 및 인텔리센스(IntelliSense) 자동완성 안될 때 방법 (19) | 2019.11.28 |
[유용한 팁] 구글 번역기 TTS 음성 파일 저장 방법 (0) | 2019.03.01 |
애프터이펙트(Adobe After Effects) -1610153453 오류 해결법 (2) | 2019.02.25 |
애프터이펙트(Adobe After Effects) 유용한 단축키 모음 (1) (0) | 2019.02.21 |