Verificando copias de seguridad de bases de datos SQL automáticamente

Las copias de seguridad son un punto de partida para cualquier estrategia seria de recuperación de desastres. Crear copias de seguridad de la base de datos SQL regularmente es sólo el primer paso. Igualmente importante es asegurarse de que también son confiables y restaurables. Esta es la única manera de evadir sorpresas desagradables en el caso de un desastre.

Los siguientes métodos de verificación de copias de seguridad SQL pueden ser usados:

  1. Comando RESTORE VERIFYONLY – verifica si una copia de seguridad SQL puede ser leída y restaurada.

    Para probar una copia de seguridad SQL, ejecute lo siguiente:

    RESTORE VERIFYONLY
    FROM DISK = 'E:\Test\AdventureWorks2012_Full.bak'

    Si la copia de seguridad es válida, el Motor de la Base de Datos SQL Server retorna:

    The backup set on file 1 is valid

    Note, de todas maneras, que la estructura de los datos y la confiabilidad no pueden ser verificadas de esta manera.

  2. Para verificar la estructura de los datos y la confiabilidad en una copia de seguridad SQL Server, la copia de seguridad debe ser creada usando WITH CHECKSUMS (valida las sumas de comprobación de la página y genera una de respaldo). Cuando se añade a RESTORE VERIFYONLY, la sentencia verifica la integridad de los datos en la copia de seguridad.

    Si ejecuta:

    RESTORE VERIFYONLY
    FROM DISK = 'E:\Test\AdventureWorks2012_Full.bak'
    WITH CHECKSUM

    Contra una copia de seguridad no creada usando WITH CHECKSUMS, usted obtendrá el siguiente mensaje de error:

    Msg 3187, Level 16, State 1, Line 1
    RESTORE WITH CHECKSUM cannot be specified because the backup set does 
    not contain checksum information.
    Msg 3013, Level 16, State 1, Line 1
    VERIFY DATABASE is terminating abnormally.

    Si la copia de seguridad es creada usando WITH CHECKSUMS y la integridad de los datos es verificada, el siguiente mensaje es mostrado:

    The backup set on file 1 is valid

    Tenga en mente, de todas maneras, que WITH CHECKSUMS añade carga, haciendo a las copias de seguridad más grandes e incrementa el tiempo de creación de copias de seguridad (significativo para bases de datos grandes).

    Dado que RESTORE VERIFYONLY no verifica toda la información de encabezados en la copia de seguridad, hay una posibilidad de que la copia de seguridad sea inválida e imposible de restaurar, incluso si la sentencia es ejecutada exitosamente.

  3. Una manera a prueba de bobos para verificar una copia de seguridad e base de datos es restaurarla. Usted también puede correr DBCC CHECKDB inmediatamente contra la base de datos restaurada, para confirmar que todo está bien. Si ambas acciones son exitosas, la copia de seguridad está bien. A diferencia de la verificación de copias de seguridad RESTORE VERIFYONLY (donde sólo las copias de seguridad creadas usando WTH CHECKSUM son verificadas), este método puede ser usado en copias de seguridad creadas sin WITH CHECKSUM.

Use SQL Server Management Studio para restaurar copias de seguridad

Para automáticamente crear, restaurar y verificar una copia de seguridad SQL Server, use T-SQL y programe un trabajo SQL:

  1. Para crear una copia de seguridad de la base de datos, haga clic derecho en la base de datos en Object Explorer y seleccione Tasks | Back Up.

    object explorer

  2. Especifique el tipo de copia de seguridad y la localización.

    BackUpDatabase

  3. Abra el menú desplegable Script y seleccione Script Action to Job.

    BackUpDatabase2

  4. Un nuevo trabajo es automáticamente creado (crear una tarea de respaldo de la base de datos es el primer paso).
  5. Asegúrese de que la opción On success action para el paso es Go to the next step, y haga clic en OK.

    /Job Step Properties

  6. Haga clic en New para añadir un nuevo paso que restaura la copia de seguridad SQL creada en el paso 1. El comando debe contener MOVE, ya que la base de datos con la misma ruta y nombres de archivos ya existe en la instancia SQL Server.

    RESTORE DATABASE AdventureWorks2012_Test
       FROM DISK = 'E:\Test\AdventureWorks2012_Full.bak'
      WITH RECOVERY,
    MOVE 'AdventureWorks2012_Data' TO 'E:\test\AdventureWorks2012_Data.mdf', 
    MOVE 'AdventureWorks2012_Log' TO 'E:\test\AdventureWorks2012_Log.ldf'
    GO

    step properties restore

  7. Haga clic en OK.
  8. Añada el tercer paso para verificar la integridad lógica y física de todos los objetos en la base de datos restaurada. El tipo de paso es Transact-SQL y el comando:

    DBCC CHECKDB (AdventureWorks2012_Test)

    Checkdb

  9. En el diálogo Job, vaya a la pestaña Schedules.
  10. Especifique el nombre del trabajo, el tiempo de ejecución y la frecuencia.

    New Job Schedule

  11. Haga clic en OK.
  12. Para verificar que el trabajo SQL es creado exitosamente, haga clic derecho en Object Explorer y seleccione Start Job at Step.

    SQL Server Agent

  13. Seleccione el primer paso. Si todos los pasos son ejecutados exitosamente, el estado del trabajo será ‘Success’.

    Start Jobs FUJITSU

  14. La base de datos restaurada será listada entre otras bases de datos en Object Explorer.

    Fujitsu SQL

La principal desventaja de este método es que se requieren considerable tiempo y espacio cuando se restaura una base de datos grande.

Use ApexSQL Restore para restaurar copias de seguridad

ApexSQL Restore es una herramienta de restauración de SQL Server que adjunta copias de seguridad de bases de datos SQL nativas y nativamente comprimidas (completas y diferenciales), y copias de seguridad de registros de transacciones como bases de datos en línea. Una vez adjuntadas, las copias de seguridad serán accesibles vía SQL Server Management Studio, Visual Studio o cualquier herramienta de terceros. ApexSQL Restore Command Line Interface habilita la programación de restauración de copias de seguridad vía trabajos SQL.

  1. Cree un archivo de lotes (llamado, por ejemplo, RestoreBatch.bat) usando la sentencia en este formato:

    “<ApexSQL Restore installation path>\ApexSQLRestore.com” /server:<server name> /user:<user name> /password:<SQL Server password> /database:<database name> /backup:<backup file path and name> /restorepath: <path for restored database files> / database: <restored database name> /attach

    Por ejemplo, para restaurar la copia de seguridad AdventureWorks2012_Full.bak almacenada en la carpeta E:\Test a la instancia Fujitsu\SQL2012 como la base de datos llamada AdventureWorks2012_Restored, y para almacenar los nuevos archivos MDF y LDF en la carpeta E:\Test, grabe lo siguiente:

    “C:\Program Files (x86)\ApexSQL\ApexSQLRestore2012\ApexSQLRestore.com” /server:Fujitsu\SQL2012 /user:sa /password:sqladmin /backup: E:\Test\AdventureWorks2012_Full.bak /restorepath: E:\Test /database:AdventureWorks2012_Restored /attach

  2. En SQL Server Management Studio, cree un trabajo para la creación de la copia de seguridad de la base de datos, usando los pasos 1 al 5 dado en la sección Use SQL Server Management Studio para restaurar copias de seguridad.
  3. En la pestaña Steps en el diálogo Job, haga clic en New.
  4. Especifique el nombre del paso y seleccione Operating system (CmdExec) como tipo.
  5. Haga clic en Open, luego navegue al archivo RestoreBatch.bat.

    Database Restore

  6. Cree un nuevo paso para verificar la integridad de la base de datos restaurada usando:

    DBCC CHECKDB (AdventureWorks2012_Restored)

    New Job

  7. Si usted desea eliminar la base de datos después de la verificación, añada un nuevo paso que ejecutará:

    DROP DATABASE AdventureWorks2012_Restored

    New Job Step 2

  8. Una vez que todos los 4 pasos son creados, programe la ejecución del trabajo como se describió en el paso 10 en la sección Use SQL Server Management Studio para restaurar copias de seguridad.

    ST Name Type

Como se mostró, ApexSQL Restore también apalanca trabajos SQL Server para automatizar la verificación de la base de datos. Las ventajas de la verificación de copias de seguridad de ApexSQL Restore son la restauración más rápida y menos uso de espacio en disco. El espacio ahorrado es hasta 99%.

Una vez que configura la verificación automática de copias de seguridad SQL, usted está un paso más cerca de una recuperación exitosa de desastres.

Traductor: Daniel Calbimonte

octubre 16, 2016