2012-03-01 3 views
0

SQL Server 2005 테이블에서 엄청난 양의 데이터를 삭제하려고했습니다 (약 8 천만 개의 레코드). columnA이 테이블의 기본 키가 아닌 경우 begin tran을 진술하지 않고, 나는SQL Server에서 삭제 작업 중지

Delete from myTable 
where columnA > X' 

처럼 내 삭제 쿼리를 썼다. 4 시간 전부터 시작되었지만 아직 끝나지 않았습니다. 비슷한 수의 행과 유사한 조건으로 유사한 시나리오에서 테스트를 수행했으며 작업은 약 70 분 내에 완료되었지만 메인 서버는 더욱 강력하지만 4 시간을 소비 한 후에는 중단되지 않습니다. 데이터베이스가 Full recovery 모델을 제공하도록 구성되었습니다.

해당 프로세스의 SPID를 강제 종료하여 작업을 중단 할 수 있는지 알고 싶습니다. SQL Server가 작업을 롤백하기 시작합니까? 데이터베이스가 일시 중지됩니까? 해결 방안은 무엇인가?

답변

2

예, 서버가 삭제 작업을 롤백합니다,

하지만

이러한 롤백은 일반적으로 이전 작업에 소요되는 시간보다, 완료 시간이 걸립니다.

DB는 일시 중단되지 않지만 롤백이 완료 될 때까지 테이블의 잠금이 유지됩니다.

관련 문제