Identifique la causa raíz de por qué la base de datos está atascada en el estado RESTAURANDO


10

Sé que hay preguntas que resuelven el problema de una base de datos atascada en el RESTORINGestado y he usado esas soluciones para volver a poner la base de datos en línea manualmente, pero mi escenario es algo diferente.

Tengo una restauración automatizada usando scripts de Powershell que restaura una copia de producción a una instancia de DEV. Las secuencias de comandos no se modifican durante aproximadamente un año y, ocasionalmente, el proceso de restauración finaliza, pero la base de datos restaurada está atascada en el RESTORINGestado (a veces la secuencia de comandos funciona bien, a veces falla así).

Cada vez que vuelvo a ejecutar manualmente el proceso, funciona o si restauro manualmente la base de datos desde la interfaz de usuario de SSMS o mediante T-SQL, se completa sin ningún problema.

He encontrado respuestas que recomiendan ejecutar CHECKDBen la base de datos restaurada, pero nada salió como causa de este problema.

Dado que los scripts de restauración restauran una copia de seguridad COMPLETA de la base de datos y usan una "WITH RECOVERY"opción, estoy tratando de averiguar qué podría estar deteniendo el proceso de restauración, aunque en realidad lo estoy restaurando usando "WITH RECOVERY".

Cualquier sugerencia es realmente apreciada ya que estoy atascado tratando de entender por qué esto sucede de vez en cuando.

Me gustaría mucho resolver la causa raíz del problema en lugar de tratar los síntomas, que es restaurar manualmente la base de datos una vez más.

Actualizar:

Github Gist como @Brent recomienda - aquí .


1
Puede obtener la respuesta de los registros de SQL Server y del visor de eventos, ¿lo comprobó? ¿Existe algún problema de espacio porque eso puede causar que el estado de restauración se atasque? ¿Verifica la integridad de la copia de seguridad antes de restaurar? ¿Cómo está su subsistema de almacenamiento
Shanky

@Shanky Voy a echar un vistazo a esos, aunque no tengo acceso directo a esa información (necesito ser aceptado con mi administrador de SAN). La integridad de la copia de seguridad está configurada para ser verificada tanto al hacer una copia de seguridad como al escribir en el disco.
Radu Gheorghiu

1
¿Qué dice el registro de errores de SQL Server? Intente ejecutar EXEC sys.xp_readerrorlog 0,1;: busque mensajes a la hora de la operación de restauración.
Max Vernon

@MaxVernon El registro de errores desde el momento en que ocurrió la restauración . He comprobado el mensaje de error y parece que me recomienda comprobar el espacio en disco, que es suficiente. Profundizaré y veré qué puedo encontrar, pero en un vistazo rápido esto podría expandirse bastante y me haría mirar muchas cosas .
Radu Gheorghiu el

Respuestas:


8

La navaja de Occam sugiere comenzar con lo obvio:

Si su script a veces deja una base de datos en estado de restauración, entonces depure el script.

Comience registrando lo que está haciendo en una tabla o un archivo. Luego, cuando termine con la base de datos en estado de restauración, retroceda a través de sus registros para ver qué salió mal. (Si desea un segundo par de ojos de la comunidad, intente cargar su script como Github Gist, pero tenga en cuenta que cuanto más grande sea, más difícil será para las personas detectar errores).

Si no desea hacer eso, intente ejecutar un seguimiento de Profiler o Extended Events para rastrear los eventos de restauración, pero tenga cuidado: es mucho más difícil de lo que parece. (Lea los comentarios en esa publicación para obtener aún más ideas de lectores que han intentado y fallado).


¡Gracias Brent, estas son algunas buenas pautas! Volveré con una actualización cuando tenga más información, por el momento el DB está bien, veré qué sucede cuando el proceso se ejecute nuevamente mañana por la mañana.
Radu Gheorghiu
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.