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.
Importante |
---|
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 completo.
Importante |
---|
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
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).
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).
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.
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.
Inicie la base de datos.
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 AdventureWorks2008R2
En este ejemplo se considera que solo existe una instantánea en la base de datos AdventureWorks2008R2. 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 AdventureWorks2008R2 to AdventureWorks2008R2_dbss1800
RESTORE DATABASE AdventureWorks2008R2 from
DATABASE_SNAPSHOT = 'AdventureWorks2008R2_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:
Para la base de datos Sales y la instantánea sales_snapshot0600, vea las secciones para crear una base de datos con grupos de archivos y para crear una instantánea de base de datos, en CREATE DATABASE (Transact-SQL).
Para la instantánea sales_snapshot1200, vea la sección sobre la creación de una instantánea en la base de datos Sales, en Cómo crear una instantánea de base de datos (Transact-SQL).
--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
Vea también