Realizar una restauración completa de la base de datos (modelo de recuperación completa)

El objetivo de una restauración completa de la base de datos es restaurar toda la base de datos. Durante el proceso de restauración, la base de datos completa se encuentra sin conexión. Antes de que ninguna parte de la base de datos esté en línea, se recuperan todos los datos a un punto coherente en el que todas las partes de la base de datos se encuentran en el mismo momento y en el que no existe ninguna transacción sin confirmar.

Con el modelo de recuperación completa, la base de datos se puede restaurar a un momento concreto. Dicho momento puede ser la copia de seguridad disponible más reciente, una fecha y hora específicas, o una transacción marcada.

Nota de seguridadNota de seguridad

Se recomienda no adjuntar ni restaurar bases de datos de orígenes desconocidos o que no sean de confianza. Estas bases de datos pueden contener código malintencionado que podría ejecutar código Transact-SQL inesperado o provocar errores debido a la modificación del esquema o de la estructura de la base de datos física. Antes de utilizar una base de datos de un origen desconocido o que no sea de confianza, ejecute DBCC CHECKDB en la base de datos en un servidor que no sea de producción y examine el código de la base de datos, como procedimientos almacenados u otro código definido por el usuario.

Restaurar una base de datos completa

En general, la recuperación de una base de datos hasta el momento del error incluye los siguientes pasos básicos:

  1. Realizar una copia de seguridad del registro de transacciones activo (denominado el final del registro). De esta forma se crea una copia del final del registro. Si el registro de transacciones activo no está disponible, todas las transacciones de esa parte del registro se pierden.

    Nota importanteImportante

    En el modelo de recuperación optimizado para cargas masivas de registros, realizar la copia de seguridad de un registro que contiene operaciones de registro masivo requiere acceso a todos los archivos de datos de la base de datos. Si no se puede tener acceso a los archivos de datos, no se puede realizar una copia de seguridad del registro de transacciones. En ese caso, debe repetir manualmente todos los cambios realizados desde la copia de seguridad de registros más reciente.

    Para obtener más información, vea Copias del final del registro.

  2. Restaurar la copia de seguridad completa más reciente sin recuperar la base de datos (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  3. Si existen copias de seguridad diferenciales, restaurar la más reciente sin recuperar la base de datos (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).

  4. Restaurar los registros secuencialmente con la opción NORECOVERY, comenzando por la primera copia de seguridad de registros de transacciones creada después de la copia de seguridad que se acaba de restaurar.

  5. Recuperar la base de datos (RESTORE DATABASE database_name WITH RECOVERY). Como alternativa, este paso se puede combinar con la restauración de la última copia de seguridad de registros.

  6. Una restauración completa de la base de datos normalmente se puede recuperar hasta un punto o transacción marcada en una copia de seguridad de registros. Sin embargo, en el modelo de recuperación optimizado para cargas masivas de registros, si la copia de seguridad de registros contiene cambios de registros de operaciones masivas, no es posible la recuperación a un momento dado. Para obtener más información, vea Restaurar bases de datos a un punto de una copia de seguridad.

En la siguiente ilustración se muestra este proceso. Después de que se produzca un error (1), se crea una copia del final del registro (2). A continuación, la base de datos se restaura al punto del error. Esto implica la restauración de una copia de seguridad de la base de datos, de una copia de seguridad diferencial subsiguiente, y de cada copia de seguridad del registro realizada después de la copia de seguridad diferencial, incluida la copia del final del registro.

Completar la restauración de una base de datos hasta que se produjo un error

Al restaurar completamente una base de datos, debe utilizar una única secuencia de restauración. En el siguiente ejemplo se muestran las opciones más importantes de una secuencia de restauración para el caso de una restauración completa en que la base de datos se restaura al momento del error. Una secuencia de restauración consta de dos o más operaciones de restauración que mueven datos en una o varias fases de restauración. La sintaxis y los detalles no relevantes para este propósito se omiten.

La base de datos se restaura y se pone al día. Para reducir el tiempo de puesta al día se utiliza una copia diferencial de la base de datos. Esta secuencia de restauración está orientada a eliminar la pérdida de trabajo; la última copia de seguridad que se restaura es una copia del final del registro.

La sintaxis básica de RESTORE para la secuencia de restauración es:

  1. RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

  2. RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

  3. RESTORE LOG database FROM log_backup WITH NORECOVERY;

    Repita este paso de restauración del registro para cada copia de seguridad de registros adicional.

  4. RESTORE DATABASE database WITH RECOVERY;

Ejemplo

En el ejemplo siguiente, la base de datos de ejemplo AdventureWorks2008R2 se configuró de forma que utilice el modelo de recuperación completa antes de que se realice la copia de seguridad. En el ejemplo, se crea una copia del final del registro de la base de datos AdventureWorks2008R2. A continuación, en el ejemplo se restaura una copia de seguridad completa anterior de la base de datos y una copia de seguridad de registros; por último, en el ejemplo se restaura la copia del final del registro. En el ejemplo, se recupera la base de datos en un último paso independiente.

Nota

En este ejemplo se usa una copia de seguridad de base de datos y una copia de seguridad de registros que se crea en la sección "Usar copias de seguridad de la base de datos en el modelo de recuperación completa" de Copias de seguridad completas de bases de datos.

En el ejemplo se comienza con una instrucción ALTER DATABASE que establece el modelo de recuperación como FULL.

USE master;
--Create tail-log backup.
BACKUP LOG AdventureWorks2008R2 
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak'  
   WITH NORECOVERY; 
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2008R2 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak' 
  WITH FILE=1, 
    NORECOVERY;

--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks2008R2 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak' 
  WITH FILE=2, 
    NORECOVERY;

--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks2008R2 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak'
  WITH FILE=3, 
    NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks2008R2 WITH RECOVERY;
GO

Recuperar al momento del error

Para restaurar una copia de seguridad completa de la base de datos

Nota importanteImportante

Para restaurar una copia de seguridad de la base de datos en una instancia de servidor distinta, vea Copiar bases de datos con Copia de seguridad y restauración y Administrar los metadatos cuando una base de datos pasa a estar disponible en otra instancia de servidor.

Para restaurar una copia de seguridad diferencial de la base de datos

Para restaurar una copia de seguridad del registro de transacciones

Después de restaurar la copia o copias de seguridad de los datos, debe restaurar todas las copias de seguridad de registros de transacciones posteriores y, a continuación, recuperar la base de datos.

Para restaurar una copia de seguridad mediante los objetos de administración de SQL Server (SMO)

Recuperar base de datos a un momento concreto

En el modelo de recuperación completa, una base de datos se puede restaurar a un momento concreto de una copia de seguridad de registros. El momento concreto puede ser una fecha y hora específicas, una transacción marcada o un número de secuencia de registro (LSN). Para obtener más información, vea Restaurar bases de datos a un punto de una copia de seguridad.

Compatibilidad con copias de seguridad de versiones anteriores de SQL Server

En SQL Server 2008, puede restaurar una copia de seguridad de base de datos creada con SQL Server 2000, SQL Server 2005 o SQL Server 2008. Sin embargo, las copias de seguridad las bases de datos maestra, de modelo y msdb creadas mediante SQL Server 2000 o SQL Server 2005 no pueden restaurarse con SQL Server 2008. Asimismo, las copias de seguridad de SQL Server 2008 no se pueden restaurar con versiones anteriores de SQL Server.

SQL Server 2008 utiliza una ruta de acceso predeterminada distinta a la de las versiones anteriores. Por lo tanto, para restaurar una base de datos creada en la ubicación predeterminada de las copias de seguridad de SQL Server 2000 o SQL Server 2005, es preciso utilizar la opción MOVE. Para obtener información acerca de la nueva ruta de acceso predeterminada, vea Ubicaciones de archivos para las instancias predeterminadas y con nombre de SQL Server.

Nota

Para obtener información acerca de cómo actualizar una base de datos creada mediante SQL Server 7.0 o versiones anteriores a SQL Server 2005, vea Copiar bases de datos de SQL Server 7.0 o anterior.