En primer lugar, verifique el registro de errores de SQL para ver si realmente alcanzó un tamaño máximo para el registro. Si lo hizo, entonces la consulta no tiene esperanzas de completarse, probablemente ya esté en un estado de reversión.
Incluso si es así, siempre prefiero matar el spid manualmente (usar sp_who2
o sp_WhoIsActive
para encontrar el spid, luego hacer un kill 59
o lo que sea). Tampoco puede verificar el estado de reversión a menos que haga un KILL explícito, vea este hilo relacionado .
Como se trata de una eliminación, y no una actualización o inserción, puede ser muy afortunado y descubrir que retrocede de inmediato. De lo contrario, puede llevar tanto tiempo (o más) retroceder como lo hizo para llegar a este punto.
Para ver el estado de reversión, use
kill 59 with statusonly
Desafortunadamente, he encontrado que esto con frecuencia no muestra nada útil, solo un "0% completado". En ese caso, tendrá que usar sp_who2
y observar el IO y la CPU para ver si todavía está haciendo algo.
En cuanto al reinicio, este es un grave riesgo. Si el spid está retrocediendo activamente (la CPU y la E / S están cambiando), reiniciar SQL solo desconectará la base de datos por completo hasta que la reversión haya finalizado por completo (horas y horas). Pero , si la CPU y la E / S no se mueven, de hecho puede eliminarlo de inmediato. De cualquier manera, es un riesgo.
Una última opción, si las cosas son especialmente graves: si tiene una copia de seguridad justo antes de que comenzara la eliminación (y no ha habido otras actualizaciones de la base de datos) , entonces la forma más rápida de recuperación puede ser simplemente soltar la base de datos, reiniciar SQL y restauración desde copia de seguridad.
Si no puede soltar la base de datos (o si ya reinició la instancia y el registro de errores de sql predice un tiempo de recuperación de 24 horas), cierre los servicios SQL, elimine los archivos MDF y LDF del disco, inicie SQL, suelte la base de datos (fantasma) y restaurar desde la copia de seguridad.
Obviamente, solo lo intentaría si fuera una base de datos de procesamiento de fondo con la que los usuarios no interactuaran.