Прежде всего, проверьте журнал ошибок SQL, чтобы увидеть, действительно ли он достиг максимального размера для журнала. Если это так, то у запроса нет надежды на завершение, возможно, он уже находится в состоянии отката.
Даже если это так, я всегда предпочитаю убить спид вручную (используйте sp_who2
или, sp_WhoIsActive
чтобы найти спид, затем выполните a kill 59
или что-либо еще). Вы также не можете проверить состояние отката, если не выполните явное KILL, см. Эту связанную ветку .
Поскольку это удаление, а не обновление или вставка, вам может повезти, и вы обнаружите, что он немедленно откатывается. Если нет, откат может занять столько же времени (или дольше), сколько и до этой точки.
Чтобы увидеть статус отката, используйте
kill 59 with statusonly
К сожалению, я обнаружил, что это часто не показывает ничего полезного, просто «0% завершено». В этом случае вам придется использовать sp_who2
и наблюдать за IO и процессором, чтобы убедиться, что он все еще что-то делает.
Что касается перезагрузки, это серьезный риск. Если spid активно откатывается (ЦП и IO меняются), то перезапуск SQL только переведет базу данных в автономный режим полностью, пока откат не будет полностью завершен (часы и часы). Но если процессор и ввод-вывод не движутся, то он может на самом деле очистить его сразу. В любом случае, это риск.
Один последний вариант, если все особенно страшно: если у вас есть резервная копия непосредственно перед началом удаления (и других обновлений базы данных не было) , то самый быстрый способ восстановления может состоять в простом удалении БД, перезапуске SQL и восстановление из резервной копии.
Если вы не можете удалить БД (или вы уже перезапустили экземпляр, а журнал ошибок sql предсказывает 24-часовое время восстановления), затем закройте службы SQL, удалите файлы MDF и LDF с диска, запустите SQL, удалите (призрачная) база данных и восстановление из резервной копии.
Очевидно, вы бы попытались сделать это только в том случае, если бы это была внутренняя база данных обработки, с которой пользователи не взаимодействовали.