Published on

February 21, 2012

Reanudar restauraciones de bases de datos fallidas en SQL Server

¿Alguna vez te has encontrado en una situación en la que una restauración de base de datos en SQL Server falló debido a un problema que no es de SQL Server, como la consistencia de la copia de seguridad o la falta de espacio? Si es así, te alegrará saber que hay una cláusula poco conocida en el comando RESTORE DATABASE llamada RESTART que puede ayudarte a reanudar el proceso de restauración sin tener que empezar desde cero.

El nombre de esta cláusula, RESTART, puede ser un poco confuso. En realidad, no reinicia nada; en cambio, te permite continuar o reanudar una restauración que se interrumpió por alguna razón. Veamos un ejemplo para ilustrar cómo funciona esto.

Imagina que eres un administrador de bases de datos y comienzas una restauración de copia de seguridad grande antes de salir de la oficina por la tarde. El proceso de restauración suele tardar unas 4 horas en completarse. Cuando inicias sesión al día siguiente para verificar el progreso, notas que la base de datos todavía está en estado de RESTORING, pero tu ventana de consulta con el comando de restauración ha encontrado un error. Después de investigar, descubres que el servidor perdió energía y se apagó 3 horas y 50 minutos después de iniciar la restauración. El equipo de operaciones de TI ha vuelto a poner en línea el servidor desde entonces.

Si volvieras a iniciar el proceso de restauración, tardaría otras 4 horas en completarse. Sin embargo, al usar la cláusula RESTART, puedes reducir significativamente el tiempo de restauración a solo unos minutos. Esto puede ser un gran ahorro de tiempo, especialmente para bases de datos grandes.

Aquí tienes un ejemplo de cómo usar la cláusula RESTART en una restauración de base de datos:

-- Cambiar el contexto de la base de datos
USE SQLServer365;

-- Obtener una lista de archivos y ubicaciones de la base de datos para la restauración
sp_helpfile;

-- Cambiar el contexto de la base de datos
USE master;

-- Hacer una copia de seguridad de la base de datos
BACKUP DATABASE SQLServer365 TO DISK = 'D:\SQL\Backup\SQLServer365_RESTART_Test.bak';

-- Restaurar la base de datos
RESTORE DATABASE SQLServer365 FROM DISK = 'D:\SQL\Backup\SQLServer365_RESTART_Test.bak'
WITH REPLACE, MOVE 'SQLServer365_Data' TO 'D:\SQL\Data\SQLServer365_Data.mdf',
MOVE 'SQLServer365_Log' TO 'D:\SQL\Log\SQLServer365_Log.ldf';

-- DETENER EL SERVICIO DE SQL SERVER MIENTRAS SE ESTÁ RESTAURANDO
-- Mensaje de error recibido en el cliente
-- INICIAR EL SERVICIO DE SQL SERVER
-- Habrá un mensaje en el registro de SQL como el siguiente
-- La base de datos 'SQLServer365' está marcada como RESTORING y se encuentra en un estado que no permite ejecutar la recuperación.
-- En este punto, la base de datos está marcada como RESTORING y no es accesible.

-- Cambiar el contexto de la base de datos
USE master;

-- Restaurar la base de datos con la opción RESTART (¡esto reanuda la restauración, en serio!)
RESTORE DATABASE SQLServer365 FROM DISK = 'D:\SQL\Backup\SQLServer365_RESTART_Test.bak'
WITH REPLACE, RESTART, MOVE 'SQLServer365_Data' TO 'D:\SQL\Data\SQLServer365_Data.mdf',
MOVE 'SQLServer365_Log' TO 'D:\SQL\Log\SQLServer365_Log.ldf';

Al usar la cláusula RESTART en el comando RESTORE DATABASE, puedes reanudar el proceso de restauración desde donde se detuvo, lo que te ahorra tiempo y recursos valiosos. Es importante tener en cuenta que he probado esta función exhaustivamente en SQL Server 2008 y SQL Server 2008 R2 sin encontrar ningún problema.

Entonces, la próxima vez que te encuentres con una restauración de base de datos fallida debido a un problema que no es de SQL Server, recuerda usar la cláusula RESTART para reanudar rápidamente el proceso y poner tu base de datos en funcionamiento en poco tiempo.

¡Disfruta!

Chris

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.