Cómo programar una restauración de copia de seguridad de una base de datos en SQL Server

Cuando se está recuperando de una falla de base de datos SQL Server, un administrador de base de datos necesita restaurar un conjunto de copias de seguridad SQL Server en una secuencia correcta y significativa. Con esto en mente, el objetivo es diseñar una estrategia de recuperación de desastres creando un plan de copias de seguridad sólido, así como un plan apropiado de restauración de bases de datos en SQL Server. Este artículo describirá 2 diferentes soluciones para creat y programar una restauración de base de datos en SQL Server.

Cuando se crea un plan de restauración de bases de datos, la primera cosa a tomar en cuenta es que hay 3 diferentes escenarios de restauración en SQL Server:

  • Restauración completa de la base de datos – la base de datos completa es restaurada usando una copia de seguridad completa, todas las copias de seguridad y todas las copias de seguridad de registros subsecuentes.
  • Restauración de archivo – un conjunto de archivos o un archivo de datos es restaurado sin restaurar la base de datos entera.
  • Restauración de página – restaura una o más páginas dañadas (Una cadena completa de registros de transacciones debe estar disponible).
    Nota: La restauración de página no está disponible cuando la base de datos está en el modelo de recuperación simple.

La principal diferencia entre la restauración completa de una base de datos SQL Server y la restauración de archivo/página es lo siguiente:

  • La restauración completa de base de datos realiza una restauración completa y puede tomar una cantidad substancial de tiempo en comparación con los otros 2 escenarios.
  • Durante el proceso de restauración de archivos o páginas, los otros datos (no afectados) en la base de datos permanecerán en línea y completamente operacionales durante el proceso de restauración.

Las opciones RECOVERY y NONRECOVERY

Independientemente de cómo son restaurados los datos, antes de que una base de datos pueda ser recuperada, el Motor de la Base de Datos SQL Server revisa y se asegura de que toda la base de datos sea lógicamente consistente. Esto significa que no será posible recuperar un archivo y ponerlo en línea si no ha sido adelantado suficientemente para ser consistente con el resto de la base de datos.

La acción de retrotraer la base de datos es controlada por la sentencia RESTORE a través de las opciones RECOVERY y NONRECOVERY:

  • RECOVERY (por defecto) indica que después de que la puesta al día de la copia de seguridad actual está completada, la reversión será realizada inmediatamente después. Recuperar la base de datos requiere que el conjunto entero de datos siendo restaurados (el conjunto de puestas al día) sea consistente con la base de datos. Si el conjunto de puestas al día no ha sido no se ha adelantado lo suficiente para ser consistente con la base de datos y RECOVERY está especificado, el Motor de la Base de datos lanza un error.
  • NONRECOVERY especifica que la reversión no ocurrirá después de que la puesta al día se complete. Esto permite a la puesta al día continuar con la siguiente sentencia en la secuencia. En este caso, la secuencia de restauración puede restaurar otras copias de seguridad y ponerlas al día.

Crear una restauración de la base de datos programada en SQL Server usando un trabajo de SQL Server Agent

Para automatizar y programar una restauración de base de datos con SQL Server Agent:

  1. En el panel de Object Explorer, navegue a SQL Server Agent, expanda el nodo, haga clic derecho en Jobs y seleccione New Job en el menú contextual.

  2. En el diálogo New Job provea un nombre para el trabajo y todos los detalles aplicables (owner, category, description).
  3. En el panel Select a page,haga clic en la pestaña Steps y haga clic en el botón New para crear un backup step.
  4. En el backup step, provea un nombre de paso y añada un script Transact-SQL (T-SQL).

    Para restaurar una base de datos completa SQL Server (desde el dispositivo de respaldo lógico AdventureWorks2012Backups) use el siguiente script:

    RESTORE DATABASE AdventureWorks2012
       FROM AdventureWorks2012Backups;
    

    Para restaurar copias de seguridad completes y diferenciales use el siguiente script:

    RESTORE DATABASE AdventureWorks2012
       FROM DISK = 'C:\Backups\AdventureWorks2012.bak'
       WITH FILE = 3
          NORECOVERY;
    RESTORE DATABASE AdventureWorks2012
       FROM DISK = 'C:\Backups\AdventureWorks2012.bak'
       WITH FILE = 5
          RECOVERY;
    

    Nota: el ejemplo provisto restaura una copia de seguridad de base de datos completa, seguido de una restauración de una copia de seguridad diferencial del mismo dispositivo/archivo de respaldo. La copia de seguridad de la base de datos completa restaurada está en el tercer conjunto de copias de seguridad en el dispositivo (FILE=3) y la copia de seguridad diferencial está en el quinto conjunto de copias de seguridad en el dispositivo (FILE=5).

    Para restaurar páginas use el siguiente script:

    RESTORE DATABASE AdventureWorks2012 PAGE='1:23, 1:107, 1:109, 1:349'
       FROM 'C:\Backups\AdventureWorks2012.bak' 
    

    Para restaurar archivos o grupos de archivos específicos use el siguiente script:

    RESTORE DATABASE AdventureWorks2012
       FILE = N'AdventureWorks2012_Data',
       FILEGROUP = 'new_customers',
       FROM DISK = N'C:\Backups\AdventureWorks2012.bak'
    

  5. Haga clic en OK para añadir un paso
  6. El trabajo será creado después de hacer clic en el botón OK en el diálogo New Job, pero lo pospondremos en este momento para crear un programa. Para programar un trabajo, en el diálogo New Jobs, haga clic en Schedules para abrir el diálogo de programación de trabajos.
  7. Haga clic en el botón New
  8. Provea un nombre para el programa y especifique el tipo de programa, una frecuencia de ocurrencia y la fecha de validación. Haga clic en OK para crear un programa y cerrar el diálogo.

  9. Haga clic en el botón OK para finalizar y crear el trabajo.

En este momento, el trabajo es creado y puede ser localizado en el panel Object Explorar debajo de SQL Server Agent ➜nodo Jobs.

Para iniciar el trabajo, haga clic en él en el panel Object Explorer y seleccione la opción Start job at step

Con esto, el trabajo de restauración está en marcha, y ocurrirá en relación al programa predefinido.

Hay muchos contras con este método:

  • Los asistentes del trabajo de restaurar y el programa pueden ser confusos y difíciles de manejar.
  • No hay manera simple de monitorear o tener una vista general de los trabajos programados o de aquellos que han sido completados ya.

Traductor: Daniel Calbimonte

agosto 16, 2016