Cómo aplicar una copia de seguridad del registro de transacciones (Transact-SQL)

Para aplicar una copia de seguridad del registro de transacciones a una base de datos deben cumplirse las siguientes condiciones:

  • La base de datos debe haber utilizado el modelo de recuperación completa o el modelo de recuperación por medio de registros de operaciones masivas antes de crearse la copia de seguridad completa o diferencial más reciente.

  • En la secuencia de restauración se debe haber especificado WITH NORECOVERY al restaurar las copias de seguridad anteriores.

  • Las copias de seguridad de registros deben haberse aplicado en la secuencia en que fueron creadas, sin saltos en la cadena de registros. Salvo en la última copia de seguridad de registros, debe usar WITH NORECOVERY como se indica a continuación:

    RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
    
  • Al aplicar la última copia de seguridad de registros, puede:

    • Recuperar la base de datos como parte de la última instrucción BACKUP LOG:

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;
      GO
      
    • Esperar a recuperar la base de datos utilizando otra instrucción RESTORE DATABASE:

      RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; 
      RESTORE DATABASE <database_name> WITH RECOVERY;
      GO
      

      Si espera a recuperar la base de datos tendrá la oportunidad de comprobar que ha restaurado todas las copias de seguridad de registros necesarias. Este método suele ser aconsejable al realizar restauraciones a un momento dado.

Nota importanteImportante

Se recomienda que especifique siempre WITH NORECOVERY o WITH RECOVERY en todas las instrucciones RESTORE para evitar ambigüedades. Esto es especialmente importante cuando se escriben scripts.

Para aplicar una copia de seguridad del registro de transacciones

  1. Ejecute la instrucción RESTORE LOG para aplicar la copia de seguridad del registro de transacciones especificando:

    • El nombre de la base de datos a la que se aplicará el registro de transacciones.

    • El dispositivo de copia de seguridad desde el que se restaurará la copia de seguridad del registro de transacciones.

    • La cláusula NORECOVERY.

    La sintaxis básica de esta instrucción es la siguiente:

    RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY.

    Donde database_name es el nombre de la base de datos y <backup_device>es el nombre del dispositivo que contiene la copia de seguridad de registros que se restaura.

  2. Repita el paso 1 para cada copia de seguridad del registro de transacciones que tenga que aplicar.

  3. Después de restaurar la copia de seguridad más reciente en la secuencia de restauración, utilice la siguiente instrucción para recuperar la base de datos:

    RESTORE database_name WITH RECOVERY

    Nota importanteImportante

    Si está creando una base de datos reflejada, omita el paso de recuperación. Una base de datos reflejada debe permanecer en el estado RESTORING.

Ejemplo

La base de datos AdventureWorks2008R2 utiliza el modelo de recuperación simple de forma predeterminada. En los siguientes ejemplos se requiere la modificación de la base de datos para utilizar el modelo de recuperación completa, como se indica a continuación:

ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL

A. Aplicar una sola copia de seguridad del registro de transacciones

En el siguiente ejemplo se empieza con la restauración de la base de datos AdventureWorks2008R2 utilizando una copia de seguridad completa de la base de datos que se encuentra en un dispositivo de copia de seguridad denominado AdventureWorks2008R2_1. A continuación, se aplica la primera copia de seguridad del registro de transacciones, que se encuentra en un dispositivo de copia de seguridad denominado AdventureWorks2008R2_log. Finalmente, el ejemplo recupera la base de datos.

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2_log
   WITH FILE = 1,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks2008R2
   WITH RECOVERY
GO

B. Aplicar varias copias de seguridad del registro de transacciones

En el siguiente ejemplo se empieza con la restauración de la base de datos AdventureWorks2008R2 utilizando una copia de seguridad completa de la base de datos que se encuentra en un dispositivo de copia de seguridad denominado AdventureWorks2008R2_1. A continuación, se aplican, una por una, las tres primeras copias de seguridad del registro de transacciones, que se encuentran en un dispositivo de copia de seguridad denominado AdventureWorks2008R2_log. Finalmente, el ejemplo recupera la base de datos.

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2_1
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2_log
   WITH FILE = 1,
   NORECOVERY
GO
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2_log
   WITH FILE = 2,
   WITH NORECOVERY
GO
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2_log
   WITH FILE = 3,
   WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks2008R2
   WITH RECOVERY
GO