Restaurar una base de datos según el punto de error en el modelo de recuperación completa (Transact-SQL)
En este tema se explica cómo realizar una restauración hasta el momento del error. Este tema solo es relevante para las bases de datos que utilizan los modelos de recuperación completa u optimizado para cargas masivas de registros.
Para restaurar hasta el momento del error
Realice una copia de seguridad del final del registro mediante la ejecución de la siguiente instrucción BACKUP básica:
BACKUP LOG <database_name> TO <backup_device> WITH NORECOVERY, NO_TRUNCATE;
Restaure una copia de seguridad completa de la base de datos mediante la ejecución de la siguiente instrucción RESTORE DATABASE básica:
RESTORE DATABASE <database_name> FROM <backup_device> WITH NORECOVERY;
Opcionalmente, restaure una copia de seguridad diferencial de la base de datos mediante la ejecución de la siguiente instrucción RESTORE DATABASE básica:
RESTORE DATABASE <database_name> FROM <backup_device> WITH NORECOVERY;
Aplique los registros de transacciones, incluida la copia del final del registro que ha creado en el paso 1, mediante la especificación de WITH NORECOVERY en la instrucción RESTORE LOG:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
Recupere la base de datos mediante la ejecución de la siguiente instrucción RESTORE DATABASE:
RESTORE DATABASE <database_name> WITH RECOVERY;
Ejemplo
Antes de que pueda ejecutar el ejemplo, debe completar los preparativos siguientes:
La base de datos AdventureWorks2012 utiliza el modelo de recuperación simple de forma predeterminada. Puesto que este modelo de recuperación no admite la restauración hasta el punto del error, configure AdventureWorks2012 para que utilice el modelo de recuperación completa mediante la ejecución de la siguiente instrucción ALTER DATABASE:
USE master; GO ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;
Cree una copia de seguridad completa de la base de datos mediante la siguiente instrucción BACKUP:
BACKUP DATABASE AdventureWorks2012 TO DISK = 'C:\AdventureWorks2012_Data.bck';
Cree una copia de seguridad de registros rutinaria:
BACKUP LOG AdventureWorks2012 TO DISK = 'C:\AdventureWorks2012_Log.bck';
En el ejemplo siguiente se restauran las copias de seguridad que se han creado con anterioridad, tras crear una copia del final del registro de la base de datos AdventureWorks2012 . (En este paso se asume que se puede tener acceso al disco de registros).
Primero, en el ejemplo se crea una copia del final del registro de la base de datos que captura el registro activo y deja la base de datos en el estado de restauración. A continuación, en el ejemplo se restaura la copia de seguridad de la base de datos, se aplica la copia del final del registro rutinaria que se ha creado con anterioridad y se aplica la copia de seguridad de registros después del error. Finalmente, en el ejemplo se recupera la base de datos en un paso diferente.
[!NOTA]
El comportamiento predeterminado es recuperar una base de datos como parte de la instrucción que restaura la copia de seguridad final.
/* Example of restoring a to the point of failure */
-- Step 1: Create a tail-log backup by using WITH NORECOVERY.
BACKUP LOG AdventureWorks2012
TO DISK = 'C:\AdventureWorks2012_Log.bck'
WITH NORECOVERY;
GO
-- Step 2: Restore the full database backup.
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'C:\AdventureWorks2012_Data.bck'
WITH NORECOVERY;
GO
-- Step 3: Restore the first transaction log backup.
RESTORE LOG AdventureWorks2012
FROM DISK = 'C:\AdventureWorks2012_Log.bck'
WITH NORECOVERY;
GO
-- Step 4: Restore the tail-log backup.
RESTORE LOG AdventureWorks2012
FROM DISK = 'C:\AdventureWorks2012_Log.bck'
WITH NORECOVERY;
GO
-- Step 5: Recover the database.
RESTORE DATABASE AdventureWorks2012
WITH RECOVERY;
GO