스케줄 도는 프로시저를 맹글다가 버그가 있는 바람에 스케줄 도는거 실패나고.. ;; 해당 프로세스 찾아서 kill로 죽여도 죽지 않는 좀비 프로세스가 돼 버린 경우!!!
순서
1. sp_who와 sp_lock를 사용해 lock이 걸려있는 프로세스를 찾고
2. sp_inputbuffer(spid) 를 이용해 해당 쿼리가 뭔지도 확인해보는 센스...
3. 그러구 죽일 만한 놈들은 죽여버린다. kill spid with statusonly (요건 프로세스 상태 보는거)
데드락이 자꾸 걸리거나 하는 경우 안생기게 하는게 최선이겠지만, 일단 벌어진 상태라믄... 급한 김에
select @@lock_timeout 으로 lock 해제 timeout값이 어떻게 설정되어 있는지 확인한 담에
set lock_timeout [time_period] 값으로 자동 롤백 타임아웃 값을 설정해준다..
이렇게 해서 해결을 했는데..
잘못해서 "트랜잭션 롤백이 진행 중입니다. 예상 롤백 완료율은 100%, 남은 시간은 0초입니다." 요딴 식으로 메세지가 자꾸 나오고 해당 프로세스도 삭제가 안되는 경우가 MS 에서 얘기한 좀비 버그가 된 것이다..
요럴 때는 먼저 관리도구 --> 구성요소 서비스 --> 분산트랜잭션 코디네이터 --> 트랜잭션 목록에서 안지워졌던 프로세스들이 있는지 확인하고.. (얘네들이 좀비..)
서비스에서 Distributed Transaction Coordinator 서비스를 재시작~
일케하믄 SQL 서비스 재시작 안하고 해결 가능~
출처 : http://www.econote.co.kr/main/view_post.asp?post_seq_no=43381
Comment on this post!