Restauraciones de base de datos completas (modelo de recuperación completa)Complete Database Restores (Full Recovery Model)

SE APLICA A: síSQL Server noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

El objetivo de una restauración completa de la base de datos es restaurar toda la base de datos.In a complete database restore, the goal is to restore the whole database. Durante el proceso de restauración, la base de datos completa se encuentra sin conexión.The whole database is offline for the duration of the restore. 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.Before any part of the database can come online, all data is recovered to a consistent point in which all parts of the database are at the same point in time and no uncommitted transactions exist.

En el modelo de recuperación completa, 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.Under the full recovery model, after you restore your data backup or backups, you must restore all subsequent transaction log backups and then recover the database. Puede restaurar una base de datos a un punto de recuperación específico en una de estas copias de seguridad de registros.You can restore a database to a specific recovery point within one of these log backups. El punto de recuperación puede ser una fecha y hora específicas, una transacción marcada o un número de secuencia de registro (LSN).The recovery point can be a specific date and time, a marked transaction, or a log sequence number (LSN).

Al restaurar una base de datos, especialmente en el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros, debe usar una única secuencia de restauración.When restoring a database, particularly under the full recovery model or bulk-logged recovery model, you should use a single restore sequence. 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.A restore sequence consists of one or more restore operations that move data through one or more of the phases of restore.

Orígenes no de confianzaUntrusted sources

Se recomienda no adjuntar ni restaurar bases de datos de orígenes desconocidos o que no sean de confianza.We recommend that you do not attach or restore databases from unknown or untrusted sources. Estas bases de datos pueden contener código malintencionado que podría ejecutar código Transact-SQLTransact-SQL inesperado o provocar errores debido a la modificación del esquema o de la estructura de la base de datos física.These databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. 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.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a non-production server. Además, examine el código escrito por el usuario en la base de datos, como los procedimientos almacenados u otro código definido por el usuario.Also, examine the user-written code in the database, such as stored procedures or other user-defined code.

Copias de seguridad de versiones anterioresBackups from earlier versions

Para obtener más información sobre la compatibilidad con las copias de seguridad de versiones anteriores de SQL ServerSQL Server, vea la sección "Soporte de compatibilidad" de RESTORE (Transact-SQL).For information about support for backups from earlier versions of SQL ServerSQL Server, see the "Compatibility Support" section of RESTORE (Transact-SQL).

Restaurar una base de datos hasta el momento del errorRestoring a Database to the Point of Failure

Le escuchamos: Si encuentra algo obsoleto o incorrecto en este artículo, como un paso o un ejemplo de código, indíquenoslo.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Puede hacer clic en el botón Esta página situado en la sección Comentarios en la parte inferior de esta página.You can click the This page button in the Feedback section at the bottom of this page. Leemos todos los elementos de comentarios sobre SQL, normalmente el día siguiente.We read every item of feedback about SQL, typically the next day. Gracias.Thanks.

En general, la recuperación de una base de datos hasta el momento del error incluye los siguientes pasos básicos:Typically, recovering a database to the point of failure involves the following basic steps:

  1. Realizar una copia de seguridad del registro de transacciones activo (denominado el final del registro).Back up the active transaction log (known as the tail of the log). De esta forma se crea una copia del final del registro.This creates a tail-log backup. Si el registro de transacciones activo no está disponible, todas las transacciones de esa parte del registro se pierden.If the active transaction log is unavailable, all transactions in that part of the log are lost.

    Importante

    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.Under the bulk-logged recovery model, backing up any log that contains bulk-logged operations requires access to all data files in the database. Si no se puede tener acceso a los archivos de datos, no se puede realizar una copia de seguridad del registro de transacciones.If the data files cannot be accessed, the transaction log cannot be backed up. En ese caso, debe repetir manualmente todos los cambios realizados desde la copia de seguridad de registros más reciente.In that case, you have to manually redo all changes that were made since the most recent log backup.

    Para obtener más información, vea Copias del final del registro (SQL Server).For more information, see Tail-Log Backups (SQL Server).

  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).Restore the most recent full database backup without recovering the database (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).If differential backups exist, restore the most recent one without recovering the database (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).

    Al restaurar la copia de seguridad diferencial más reciente se reduce el número de copias de seguridad de registros que se deben restaurar.Restoring the most recent differential backup reduces the number of log backups that must be restored.

  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.Starting with the first transaction log backup that was created after the backup you just restored, restore the logs in sequence with NORECOVERY.

  5. Recuperar la base de datos (RESTORE DATABASE database_name WITH RECOVERY).Recover the database (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.Alternatively, this step can be combined with restoring the last log backup.

En la siguiente ilustración se muestra esta secuencia de restauración.The following illustration shows this restore sequence. Después de que se produzca un error (1), se crea una copia del final del registro (2).After a failure occurs (1), a tail-log backup is created (2). A continuación, la base de datos se restaura al punto del error.Next, the database is restored to the point of the failure. 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 de registros realizada después de la copia de seguridad diferencial, incluida la copia del final del registro.This involves restoring a database backup, a subsequent differential backup, and every log backup taken after the differential backup, including the tail-log backup.

Completar la restauración de una base de datos hasta que se produjo un errorComplete database restore to the time of a failure

Nota

Cuando restaura una copia de seguridad de la base de datos en una instancia de servidor distinta, vea Copiar bases de datos con Copias de seguridad y restauración.When you restore a database backup onto a different server instance, see Copy Databases with Backup and Restore.

Sintaxis RESTORE de Transact-SQL básicaBasic Transact-SQL RESTORE Syntax

La sintaxis deTransact-SQLTransact-SQL básica para la secuencia de restauración en la ilustración anterior es la siguiente:The basic RESTORETransact-SQLTransact-SQL syntax for the restore sequence in the preceding illustration is as follows:

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

  2. RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

  3. RESTORE LOG database FROM log_backup WITH NORECOVERY;RESTORE LOG database FROM log_backup WITH NORECOVERY;

    Repita este paso de restauración del registro para cada copia de seguridad de registros adicional.Repeat this restore-log step for each additional log backup.

  4. RESTORE DATABASE database WITH RECOVERY;RESTORE DATABASE database WITH RECOVERY;

Ejemplo: recuperación hasta el momento del error (Transact-SQL)Example: Recovering to the Point of Failure (Transact-SQL)

En el siguiente ejemplo de Transact-SQLTransact-SQL se muestran las opciones fundamentales en una secuencia de restauración que restaura la base de datos hasta el momento del error.The following Transact-SQLTransact-SQL example shows the essential options in a restore sequence that restores the database to the point of failure. En el ejemplo se crea una copia del final del registro de la base de datos.The example creates a tail-log backup of the database. A continuación, en el ejemplo se restaura una copia de seguridad completa de la base de datos y una copia de seguridad de registros; a continuación; se restaura la copia del final del registro.Next, the example restores a full database backup and log backup and then restores the tail-log backup. En el ejemplo, se recupera la base de datos en un último paso independiente.The example recovers the database in a separate, final step.

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 "Copias de seguridad de la base de datos en el modelo de recuperación completa" de Copias de seguridad completas de bases de datos (SQL Server).This example uses a database backup and log backup that is created in the "Using Database Backups Under the Full Recovery Model" section in Full Database Backups (SQL Server). Antes de la copia de seguridad de la base de datos, la base de datos de ejemplo de AdventureWorks2012AdventureWorks2012 se ha configurado para usar el modelo de recuperación completa.Before the database backup, the AdventureWorks2012AdventureWorks2012 sample database was set to use the full recovery model.

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

Restaurar bases de datos a un punto de una copia de seguridad de registrosRestoring a Database to a Point Within a Log Backup

En el modelo de recuperación completa, una restauración completa de la base de datos se puede recuperar normalmente hasta un momento en el tiempo, una transacción marcada o un LSN de la copia de seguridad de registros.Under the full recovery model, a complete database restore can usually be recovered to a point of time, a marked transaction, or an LSN within a log backup. 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.However, under the bulk-logged recovery model, if the log backup contains bulk-logged changes, point-in-time recovery is not possible.

Escenarios de ejemplo de restauración en un momento concretoSample Point-in-Time Restore Scenarios

En este siguiente ejemplo se presupone que usa un sistema de base de datos de gran importancia para el que se crea una copia de seguridad completa diariamente cada medianoche, una copia de seguridad diferencial de la base de datos cada hora, de lunes a sábado, y copias de seguridad del registro de transacciones cada 10 minutos durante el día.The following example assumes a mission-critical database system for which a full database backup is created daily at midnight, a differential database backup is created on the hour, Monday through Saturday, and transaction log backups are created every 10 minutes throughout the day. Para restaurar la base de datos al estado en que estaba a las 5:19 a.m.To restore the database to the state is was in at 5:19 A.M. del miércoles, debe hacer lo siguiente:Wednesday, do the following:

  1. Restaure la copia de seguridad de la base de datos completa creada la medianoche del martes.Restore the full database backup that was created Tuesday at midnight.

  2. Restaure la copia de seguridad diferencial de la base de datos que se ha creado a las 5:00.Restore the differential database backup that was created at 5:00 A.M. del miércoles.on Wednesday.

  3. Aplique la copia de seguridad del registro de transacciones que se ha creado a las 5:10.Apply the transaction log backup that was created at 5:10 A.M. del miércoles.on Wednesday.

  4. Aplique la copia de seguridad del registro de transacciones creada a las 5:20 a.m.Apply the transaction log backup that was created 5:20 A.M. del miércoles y especifique que el proceso de recuperación solo se aplique a las transacciones realizadas antes de las 5:19 a.m.on Wednesday, specifying that the recovery process applies only to transactions that occurred before 5:19 A.M.

O bien, si la base de datos tiene que restaurarse a su estado de las 3:04 a.m.Alternatively, if the database needs to be restored to its state at 3:04 A.M. del jueves, pero la copia de seguridad diferencial de la base de datos que se creó el jueves a las 3:00 a.m.Thursday, but the differential database backup that was created at 3:00 A.M. no está disponible, haga lo siguiente:Thursday is unavailable, do the following:

  1. Restaure la copia de seguridad de la base de datos creada la medianoche del miércoles.Restore the database backup that was created Wednesday at midnight.

  2. Restaure la copia de seguridad diferencial de la base de datos creada a las 2:00 a.m.Restore the differential database backup that was created at 2:00 A.M. del jueves.on Thursday.

  3. Aplique todas las copias de seguridad del registro de transacciones creadas desde las 2:10 a.m.Apply all the transaction log backups created from 2:10 A.M. a las 3:00.to 3:00 A.M. del jueves.on Thursday.

  4. Aplique la copia de seguridad del registro de transacciones creada a las 3:10 a.m.Apply the transaction log backup that was created at 3:10 A.M. del jueves y detenga el proceso de recuperación a las 3:04 a.m.on Thursday, stopping the recovery process at 3:04 A.M.

Nota

Para obtener un ejemplo de una restauración a un momento dado, vea Restaurar una base de datos de SQL Server a un momento dado (modelo de recuperación completa).For an example of a point-in-time restore, see Restore a SQL Server Database to a Point in Time (Full Recovery Model).

Tareas relacionadasRelated Tasks

Para restaurar una copia de seguridad completa de la base de datosTo restore a full database backup

Para restaurar una copia de seguridad diferencial de la base de datosTo restore a differential database backup

Para restaurar una copia de seguridad del registro de transaccionesTo restore a transaction log backup

Para restaurar una copia de seguridad mediante los objetos de administración de SQL Server (SMO)To restore a backup by using SQL Server Management Objects (SMO)

Para restaurar bases de datos a un punto de una copia de seguridad de registrosTo restore a database to a point within a log backup

Consulte tambiénSee Also

RESTORE (Transact-SQL) RESTORE (Transact-SQL)
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
Aplicar copias de seguridad del registro de transacciones (SQL Server) Apply Transaction Log Backups (SQL Server)
sp_addumpdevice (Transact-SQL) sp_addumpdevice (Transact-SQL)
Copias de seguridad completas de bases de datos (SQL Server) Full Database Backups (SQL Server)
Copias de seguridad diferenciales (SQL Server) Differential Backups (SQL Server)
Información general de copia de seguridad (SQL Server) Backup Overview (SQL Server)
Información general sobre restauración y recuperación (SQL Server)Restore and Recovery Overview (SQL Server)