안녕하세요, 질문 하나 드립니다~ ^^
테이블의 인덱스를 rebuild 하였습니다.
ALTER INDEX ALL ON Table REBUILD WITH(ONLINE = ON)
테이블에 데이터가 많았는지 1시간이 지나도록 완료가 되지 않아,
kill 해당spid 를 하였습니다.
프로세스가 kill 되지 않아, cancel query를 하였습니다.
현재 계속 Canceling query가 진행 중이고요,
sp_who2 를 하면 Status 는 Suspended, Command는 KILLED/ROLLBACK 인 채로 4시간 지속 되었습니다.
다시 kill spid 를 하면 아래와 같이 나옵니다.
SPID 59: transaction rollback in progress. Estimated rollback completion: 0%. Estimated time remaining: 0 seconds.
어떻게 해결 할 수 있을까요...........??
Comment 5
-
나는짱이야
2014.05.20 08:55
-
서비스를 재시작 해도 롤백 프로세스는 계속 됩니다.
지금으로서는 롤백이 완료될때까지 기다리는거 말고는 방법이 없을거 같네요.
-
최강문일
2014.05.20 09:45
안녕하세요,
해결 방법 검색중에,
sp_who2 명령 결과로 해당 SPID의 CPUTime 과 DiskIO의 변화가 없다면
( + 데이터 손실을 고려하지 않는다면..)
SQL Server 를 Restart 하라는 글을 찾았습니다..
물론 말씀해 주신 것처럼
서비스를 재시작 해도 롤백 프로세스는 계속 유지 된다는 것도 알게되었습니다만...
SQL Server Restart 해도 괜찮을까요..?
-
저도 대충 아는지라 자세한 설명은 못합니다만.
데이터를 추가/수정/삭제하는 어떤 트랜잭션이던지 사용자 임의로 죽여버릴 수 있다면
DBMS가 목숨처럼 지켜야 하는 ACID를 정면으로 위배하는 결과를 초대하게됩니다.(될껍니다. -_-;;)
그래서 Restart를 하더라도 롤백은 계속 될겁니다.
그나마 다행인게 온라인 옵션을 주셨으니 저 같으면 그냥 기다리겠습니다. (밥도 못먹고... 잠도 못자고...)
-
Hisory
2014.05.20 09:31
user 가 접속하는 시간에 인덱스 리빌드는 굉장히 위험합니다.
접속이 없는시간에 하셔야 되여~~
현재 상황에서는 SQL 서비스 재시작 방법 말고는 없을꺼 같은데요.