Compartir a través de


Cómo revertir una base de datos a una instantánea de base de datos (Transact-SQL)

Las instantáneas de base de datos no constituyen un almacenamiento redundante y, en consecuencia, no ofrecen ninguna protección ante errores de disco ni otro tipo de daños. Sin embargo, si se produce un error de usuario en una base de datos en línea, se puede revertir la base de datos a una instantánea de base de datos anterior al error.

Nota importanteImportante

Para proteger una base de datos es fundamental hacer copias de seguridad con regularidad y probar el plan de restauración. Si tiene que restaurar la base de datos de origen al momento en que creó una instantánea de base de datos, implemente una directiva de copia de seguridad que le permita hacerlo.

La reversión sobrescribe la base de datos de origen inicial con la base de datos revertida. Al revertir a una instantánea se quitan todos los catálogos de texto.

Nota importanteImportante

Antes de revertir una base de datos, es recomendable que se familiarice con la información que aparece en Revertir a una instantánea de la base de datos.

Para revertir una base de datos a una instantánea de base de datos

  1. Identifique la instantánea de base de datos a la que desea revertir la base de datos. Puede ver las instantáneas de una base de datos en SQL Server Management Studio (vea Cómo visualizar una instantánea de base de datos (SQL Server Management Studio)). 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).

  2. Quita cualquier otra instantánea de base de datos.

    Para obtener información acerca de cómo quitar instantáneas, vea Cómo eliminar una instantánea de base de datos (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. Para obtener más información, vea Cómo realizar una copia de seguridad de un registro de transacciones (SQL Server Management Studio) o Cómo realizar una copia de seguridad del registro de transacciones cuando la base de datos está dañada (Transact-SQL).

  3. Realice la operación de reversión.

    Para realizar una operación de reversión es necesario disponer de permisos RESTORE DATABASE en la base de datos de origen. Para revertir la base de datos, utilice la siguiente instrucción Transact-SQL:

    RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT =<database_snapshot_name>

    Donde <database_name> es la base de datos de origen y <database_snapshot_name> es el nombre de la instantánea a la que desea revertir la base de datos. Tenga en cuenta que en esta instrucción debe especificar un nombre de instantánea y no un dispositivo de copia de seguridad.

    Para obtener más información, vea 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. La base de datos de origen y la instantánea están marcadas como "en restauración". 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.

  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.

    [!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.

  5. Inicie la base de datos.

  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). Para obtener información acerca de cómo realizar una copia de seguridad de la base de datos, vea Cómo realizar una copia de seguridad de una base de datos (SQL Server Management Studio) o Cómo crear una copia de seguridad de la base de datos completa (Transact-SQL).

Ejemplo

Esta sección contiene ejemplos de reversión de una base de datos a una instantánea de la base datos.

A. Revertir una instantánea en la base de datos AdventureWorks

En este ejemplo se considera que sólo existe una instantánea en la base de datos AdventureWorks. Para ver el ejemplo que crea la instantánea a la que se revierte la base de datos, vea Cómo crear una instantánea de base de datos (Transact-SQL).

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

B. Revertir una instantánea en la base de datos Sales

En este ejemplo se considera que hay dos instantáneas en la base de datos Sales: sales_snapshot0600 y 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.

Para ver el código para crear la base de datos de ejemplo y las instantáneas de las que depende este ejemplo, vea:

--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