반응형
MSSQL에서 쿼리를 수행할 때
쿼리가 잘못된 것이 아닌데도
쿼리가 완료가 되지 않고
계속 돌아가는 경우가 있는데
이 경우는 다른 사람이 DB를 사용하고 있는 중이거나
혹은 정상적으로 종료가 되지 않았을 경우인데
이걸 DB가 락이 걸린 상태라 한다
먼저 LOCK을 확인하려면
EXEC sp_lock;
시에 조회 내역에서 mode 컬럼을 확인해보면
컬럼값이 X인 것이 보일텐데
X값이 락이 걸린 컬럼이다
이후 컬럼이 X값인 행의 spid 컬럼값을 봐둔 뒤에
dbcc inputbuffer(spid);
를 입력해 주면
해당 spid가 무슨 쿼리를 돌리고 있는지
eventinfo 컬럼에서 확인 가능하다
또한
EXEC sp_who spid;
를 입력한 뒤
hostname 컬럼을 확인하면
누가 쿼리를 돌리고 있는지 확인 가능하다
마지막으로 누군지 확인하고
강제로 종료시켜도 지장이 없는지 확인한 뒤에
kill spid
를 입력해 주면
해당 spid의 쿼리를 강제로 종료시키게 된다
정리해보자면 다음과 같다
EXEC sp_lock;
- 락(mode 값이 X) 걸린 쿼리 확인
- spid 값으로 누군지 식별 가능
dbcc inputbuffer(spid)
- spid가 돌리는 쿼리 확인
EXEC sp_who spid
- spid가 누군지 확인
kill spid
- spid가 돌리는 쿼리 강제 종료
반응형
'Error & Fix' 카테고리의 다른 글
이클립스 GC overhead limit exceeded 에러 해결방법 (0) | 2020.03.24 |
---|---|
mssql 스칼라 변수 ~을(를) 선언해야 합니다 해결방법 (0) | 2020.03.23 |
Mybatis CDATA 사용법 및 예제 (0) | 2020.03.10 |
자바 소수 오차 없이 계산 및 사칙연산 방법 (0) | 2020.02.27 |
스택 오버플로우 로그아웃 방법 (0) | 2020.02.05 |
댓글