Revertir una base de datos a una instantánea de base de datosRevert a Database to a Database Snapshot

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

Si se dañan los datos de una base de datos en línea, revertir la base de datos a una instantánea de base de datos anterior puede ser, en algunos casos, ser una alternativa adecuada a restaurar la base de datos a partir de una copia de seguridad.If data in an online database becomes damaged, in some cases, reverting the database to a database snapshot that predates the damage might be an appropriate alternative to restoring the database from a backup. Por ejemplo, revertir una base de datos puede resultar útil para revertir un error grave del usuario que sea reciente, por ejemplo la eliminación de una tabla.For example, reverting a database might be useful for reverse a recent serious user error, such as a dropped table. Tenga en cuenta que se pierden todos los cambios realizados después de que se creara la instantánea.However, all changes made after the snapshot was created are lost.

Antes de comenzarBefore You Begin

Limitaciones y restriccionesLimitations and Restrictions

La reversión no se admite en las siguientes condiciones:Reverting is unsupported under the following conditions:

  • Hay varias instantáneas para la base de datos.There are multiple snapshots for the database. Para la reversión, solo debe haber una instantánea para la base de datos a la que se va a revertir.For reverting, there must only be one snapshot for the database, to which you plan to revert.

  • La base de datos contiene grupos de archivos de solo lectura o comprimidos.Any read-only or compressed filegroups exist in the database.

  • Algunos archivos que están ahora sin conexión estaban en línea cuando se creó la instantánea.Any files are now offline but were online when the snapshot was created.

Antes de revertir a una base de datos, debe tener en cuenta los siguientes limitaciones:Before reverting a database, consider the following limitations:

  • La reversión no se utiliza para la recuperación de medios.Reverting is not intended for media recovery. Una instantánea de base de datos es una copia incompleta de los archivos de base de datos, de modo que si se daña la base de datos o la instantánea de base de datos, es probable que no se pueda revertir a partir de una instantánea.A database snapshot is an incomplete copy of the database files, so if either the database or the database snapshot is corrupted, reverting from a snapshot is likely to be impossible. Además, aunque sea posible, no es probable que la reversión corrija el problema si se produjesen daños.Furthermore, even when it is possible, reverting in the event of corruption is unlikely to correct the problem. Por lo tanto, para proteger una base de datos es esencial hacer copias de seguridad con regularidad y probar el plan de restauración.Therefore, taking regular backups and testing your restore plan are essential to protect a database. Para obtener más información, consulte Back Up and Restore of SQL Server Databases.For more information, see Back Up and Restore of SQL Server Databases.

    Nota

    Si tiene que restaurar la base de datos de origen al momento en que creó una instantánea de base de datos, use el modelo de recuperación completa e implemente una directiva de copia de seguridad que le habilite para ello.If you need to be able to restore the source database to the point in time at which you created a database snapshot, use the full recovery model and implement a backup policy that enables you to do that.

  • La base de datos revertida sobrescribe la base de datos de origen original, de modo que se pierden todos los cambios realizados en la base de datos desde que se creó la instantánea.The original source database is overwritten by the reverted database, so any updates to the database since the snapshot's creation are lost.

  • La operación de reversión sobrescribe también el archivo de registro antiguo y lo vuelve a crear.The revert operation also overwrites the old log file and rebuilds the log. Por consiguiente, la base de datos revertida no se puede poner al día en el punto de error del usuario.Consequently, you cannot roll the reverted database forward to the point of user error. Por esta razón, recomendamos realizar una copia de seguridad del registro antes de revertir una base de datos.Therefore, we recommend that you back up the log before reverting a database.

    Nota

    Aunque no puede restaurar el registro original para poner al día la base de datos, la información del archivo de registro original puede ser útil para reconstruir los datos perdidos.Although you cannot restore the original log to roll forward the database, the information in the original log file can be useful for reconstructing lost data.

  • La reversión interrumpe la cadena de copias de seguridad del registro.Reverting breaks the log backup chain. Así pues, antes de utilizar copias de seguridad de registros de la base de datos revertida, primero deberá realizar una copia de seguridad completa de la base de datos o una copia de seguridad de los archivos.Therefore, before you can take log backups of the reverted database, you must first take a full database backup or file backup. Recomendamos realizar una copia de seguridad completa de la base de datos.We recommend a full database backup.

  • Durante una operación de reversión, tanto la instantánea como la base de datos de origen no están disponibles.During a revert operation, both the snapshot and the source database are unavailable. La base de datos de origen y la instantánea se marcan como "En restauración".The source database and snapshot are both marked "In restore." Si se produce un error durante la operación de reversión, cuando la base de datos se inicie de nuevo, la operación de reversión intentará finalizar la reversión.If an error occurs during the revert operation, when the database starts up again, the revert operation will try to finish reverting.

  • Los metadatos de una base de datos revertida son los mismos que los metadatos del momento de realizar la instantánea.The metadata of a reverted database is the same as the metadata at the time of the snapshot.

  • Al revertir se quitan todos los catálogos de texto completo.Reverting drops all the full-text catalogs.

Requisitos previosPrerequisites

Asegúrese de que la base de datos de origen y la instantánea de base de datos cumplen los siguientes requisitos previos:Ensure that the source database and database snapshot meet the following prerequisites:

SeguridadSecurity

PermisosPermissions

Cualquier usuario que tenga permisos de RESTORE DATABASE en la base de datos de origen puede revertirla a su estado cuando se creó una instantánea de base de datos.Any user who has RESTORE DATABASE permissions on the source database can revert it to its state when a database snapshot was created.

Revertir una base de datos a una instantánea de base de datos (utilizando Transact-SQL)How to Revert a Database to a Database Snapshot (Using Transact-SQL)

Para revertir una base de datos a una instantánea de base de datosTo revert a database to a database snapshot

Nota

Para obtener un ejemplo de este procedimiento, vea Ejemplos (Transact-SQL), más adelante en esta sección.For an example of this procedure, see Examples (Transact-SQL), later in this section.

  1. Identifique la instantánea de base de datos a la que desea revertir la base de datos.Identify the database snapshot to which you want to revert the database. Puede ver las instantáneas en una base de datos en SQL Server Management StudioSQL Server Management Studio (vea Ver una instantánea de base de datos (SQL Server)).You can view the snapshots on a database in SQL Server Management StudioSQL Server Management Studio (see View a Database Snapshot (SQL Server)). Además, puede identificar la base de datos de origen de una vista a partir de la columna source_database_id de la vista de catálogo sys.databases (Transact-SQL) .Also, you can identify the source database of a view from the source_database_id column of the sys.databases (Transact-SQL) catalog view.

  2. Quita cualquier otra instantánea de base de datos.Drop any other database snapshots.

    Para obtener información sobre cómo quitar instantáneas, vea Eliminar una instantánea de base de datos (Transact-SQL).For information on dropping snapshots, see Drop a Database Snapshot (Transact-SQL). Si la base de datos utiliza el modelo de recuperación completa, antes de revertir, se debe hacer una copia de seguridad del registro.If the database uses the full recovery model, before reverting, you should back up the log. Para obtener más información, vea Realizar copia de seguridad de un registro de transacciones (SQL Server) o Realizar una copia de seguridad del registro de transacciones cuando la base de datos está dañada (SQL Server).For more information, see Back Up a Transaction Log (SQL Server) or Back Up the Transaction Log When the Database Is Damaged (SQL Server).

  3. Realice la operación de reversión.Perform the revert operation.

    Para realizar una operación de reversión es necesario disponer de permisos RESTORE DATABASE en la base de datos de origen.A revert operation requires RESTORE DATABASE permissions on the source database. Para revertir la base de datos, use la siguiente instrucción Transact-SQL:To revert the database, use the following Transact-SQL statement:

    RESTORE DATABASE nombre_base_de_datos FROM DATABASE_SNAPSHOT = nombre_base_de_datos_de_instantáneaRESTORE DATABASE database_name FROM DATABASE_SNAPSHOT =database_snapshot_name

    Donde nombre_base_de_datos es la base de datos de origen y nombre_base_de_datos_de_instantánea equivale al nombre de la instantánea a la que quiere revertir la base de datos.Where database_name is the source database and database_snapshot_name is the name of the snapshot to which you want to revert the database. Tenga en cuenta que en esta instrucción debe especificar un nombre de instantánea y no un dispositivo de copia de seguridad.Notice that in this statement, you must specify a snapshot name rather than a backup device.

    Para obtener más información, consulte RESTORE (Transact-SQL).For more information, see RESTORE (Transact-SQL).

    Nota

    Durante la operación de reversión, la instantánea y la base de datos de origen no están disponibles.During the revert operation, both the snapshot and the source database are unavailable. La base de datos de origen y la instantánea están marcadas como "en restauración".The source database and snapshot are both marked as "In restore." Si se produce un error durante la operación de reversión, se intentará finalizar la reversión cuando se vuelva a iniciar la base de datos.If an error occurs during the revert operation, it will try to finish reverting when the database starts up again.

  4. Si el propietario de la base de datos ha cambiado desde la creación de la instantánea, se recomienda actualizar el propietario de la base de datos revertida.If the database owner changed since creation of the database snapshot, you may want to update the database owner of the reverted database.

    Nota

    La base de datos revertida conserva los permisos y la configuración (por ejemplo, el propietario de la base de datos y el modelo de recuperación) de la instantánea de base de datos.The reverted database retains the permissions and configuration (such as database owner and recovery model) of the database snapshot.

  5. Inicie la base de datos.Start the database.

  6. De manera opcional, realice una copia de seguridad de la base de datos revertida, especialmente si utiliza el modelo de recuperación completa (o por medio de registros de operaciones masivas).Optionally, back up the reverted database, especially if it uses the full (or bulk-logged) recovery model. Para realizar una copia de seguridad de una base de datos, vea Crear una copia de seguridad completa de base de datos (SQL Server).To back up a database, see Create a Full Database Backup (SQL Server).

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.

Ejemplos (Transact-SQL)Examples (Transact-SQL)

Esta sección contiene los siguientes ejemplos de reversión de una base de datos a una instantánea de base de datos:This section contains the following examples of reverting a database to a database snapshot:

A.A. Revertir una instantánea en la base de datos AdventureWorksReverting a snapshot on the AdventureWorks database

En este ejemplo se considera que solo existe una instantánea en la base de datos AdventureWorks2012AdventureWorks2012 .This example assumes that only one snapshot currently exists on the AdventureWorks2012AdventureWorks2012 database. Para ver el ejemplo que crea la instantánea a la que se revierte la base de datos, vea Crear una instantánea de base de datos (Transact-SQL).For the example that creates the snapshot to which the database is reverted here, see Create a Database Snapshot (Transact-SQL).

USE master;  
-- Reverting AdventureWorks to AdventureWorks_dbss1800  
RESTORE DATABASE AdventureWorks from   
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';  
GO  

B.B. Revertir una instantánea en la base de datos SalesReverting a snapshot on the Sales database

En este ejemplo se considera que hay dos instantáneas en la base de datos Sales : sales_snapshot0600 y sales_snapshot1200.This example assumes that two snapshots currently exist on the Sales database: sales_snapshot0600 and sales_snapshot1200. En el ejemplo, se elimina la instantánea más antigua y se revierte la base de datos a la instantánea más reciente.The example deletes the older of the snapshots and reverts the database to the more recent snapshot.

Para ver el código para crear la base de datos de ejemplo y las instantáneas de las que depende este ejemplo, vea:For the code for creating the sample database and snapshots on which this example depends, see:

--Test to see if sales_snapshot0600 exists and if it   
-- does, delete it.  
IF EXISTS (SELECT dbid FROM sys.databases  
    WHERE NAME='sales_snapshot0600')  
    DROP DATABASE SalesSnapshot0600;  
GO  
-- Reverting Sales to sales_snapshot1200  
USE master;  
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';  
GO  

Tareas relacionadasRelated Tasks

Consulte tambiénSee Also

Instantáneas de base de datos (SQL Server) Database Snapshots (SQL Server)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
sys.databases (Transact-SQL) sys.databases (Transact-SQL)
Reflejo e instantáneas de base de datos (SQL Server)Database Mirroring and Database Snapshots (SQL Server)