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.

Crear una restauración de base de datos programada en SQL Server usando ApexSQL Backup

Otra forma de crear y programar un trabajo de restauración de base de datos en SQL Server es usando ApexSQL Backup – una herramienta de administración de restauración y copias de seguridad para SQL Server. ApexSQL Backup es una herramienta que ayuda al usuario a programar un trabajo de restauración de base de datos con un asistente intuitivo, y también permite ver el historial de todos los trabajos, programas y resultados, o levantar una alerta de correo electrónico instantánea en caso de éxito/falo del trabajo.

ApexSQL Backup es una herramienta que permite el manejo y automatización de los trabajos de copias de seguridad y restauración mientras preserva la cadena de copias de seguridad para una restauración fácil a puntos específicos en el tiempo.

  1. Inicie la aplicación, y en la cinta principal, haga clic en el botón Restore para activar el asistente de restauración:

  2. En el primer paso del asistente, especifique lo siguiente:

    1. Seleccione el servidor SQL Server que hospeda a la base de datos.
    2. Seleccione una base de datos existente para copia de seguridad, o ingrese el nombre para una nueva base de datos
    3. Elija si cerrar a la fuerza cualquier conexión existente a la base de datos que pueda bloquear el trabajo de restauración.

  3. Haga clic en el botón Next para avanzar al paso Source del asistente.

    Elija si restaurar del tipo de copia de seguridad específico o desde un escaneo de carpetas.

    1. Si una copia de seguridad específica es seleccionada, es requerido seleccionar un archivo vía el explorador de archivos.

    2. En caso de que la opción Scan folder esté seleccionada, se requiere especificar una ruta de carpeta, y opcionalmente añadir un patrón de nombre de archivo, e incluir las subcarpetas:

  4. Haga clic en Next para avanzar al siguiente paso del asistente – Options. Aquí, se requiere especificar un tipo de restauración, así como localizaciones para las carpetas de datos y archivos de registros, así como la verificación de base de datos post restauración. Haga clic en Next para avanzar al proceso de programación.

  5. En este paso del asistente, el usuario necesita elegir si le gustaría restaurar una base de datos SQL Server inmediatamente o si quiere programar un trabajo de restauración. Si el último es elegido, el asistente de Programación aparecerá, y permitirá al usuario elegir una frecuencia de trabajo, un periodo, y un rango de tiempo.

  6. El único paso restante es inspeccionar el resumen y finalizar el proceso de programación.

  7. Con esto, el programa de trabajos de copias de seguridad es creado, y una copian de seguridad se creará en concordancia con los parámetros del programa. Un programa creado es ahora mostrado en la vista Schedules, con otros programas existentes, desde donde puede ser rastreado, o alternativamente eliminado:

Además, cuando un trabajo de restauración programado ocurre, puede ser rastreado en la pestaña Activities:

Traductor: Daniel Calbimonte

agosto 16, 2016