Остановка операции удаления в SQL Server - PullRequest
0 голосов
/ 01 марта 2012

Я хотел удалить огромное количество данных в таблице SQL Server 2005 (около 80 миллионов записей). Не указав begin tran, я написал свой запрос на удаление как

Delete from myTable 
where columnA > X' 

где columnA не является первичным ключом таблицы. Это было начато с 4 часов назад и до сих пор не закончено. Я тестировал по похожему сценарию с аналогичным количеством строк и схожим состоянием, и операция была выполнена примерно за 70 минут, но при этом основной сервер более мощный, но он не останавливается после 4 часов, проведенных. База данных была настроена для предоставления Full recovery модели.

Я хочу знать, смогу ли я остановить эту бесконечную операцию, убив SPID соответствующего процесса, и если я это сделаю, что произойдет? Будет ли SQL Server начать откат операции? будет приостановлена ​​база данных? Какое решение?

1 Ответ

2 голосов
/ 01 марта 2012

Да, сервер откатит операцию удаления,

НО

такой откат обычно занимает больше времени до завершения, чем время, потраченное ранее на работу.

DB не будет приостановлено, но блокировка таблицы будет удерживаться до завершения отката.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...