Programar y automatizar las copias de seguridad de las bases de datos de SQL Server en SQL Server Express

Este artículo presenta cómo utilizar un script Transact-SQL y el Programador de tareas de Windows para automatizar las copias de seguridad de las bases de datos de SQL Server Express de forma programada.

Versión del producto original: SQL Server
Número KB original: 2019698

Resumen

Las ediciones de SQL Server Express no ofrecen la opción de programar trabajos o planes de mantenimiento porque no incluyen el componente Agente SQL Server. Por lo tanto, al usar estas ediciones, tiene que buscar otra forma de crear copias de seguridad de las bases de datos.

Actualmente, los usuarios de SQL Server Express pueden crear copias de seguridad de sus bases de datos a través de uno de estos métodos:

Use SQL Server Management Studio o Azure Data Studio. Para obtener más información sobre cómo usar estas herramientas para crear una copia de seguridad de una base de datos, consulte los vínculos siguientes:

En este artículo se describe cómo usar un script Transact-SQL junto con el Programador de tareas para automatizar la programación de las copias de seguridad de las bases de datos de SQL Server Express.

Nota:

Esto se aplica sólo a las ediciones Express de SQL Server y no a SQL Server Express LocalDB.

Más información

Tiene que seguir estos cuatro pasos para crear una copia de seguridad de sus bases de datos de SQL Server con el Programador de tareas de Windows:

Paso A: crear un procedimiento almacenado para crear una copia de seguridad de sus bases de datos.

Conéctese a la instancia de SQL Express y cree el procedimiento almacenado sp_BackupDatabases en la base de datos maestra con el script de la siguiente ubicación:

SQL_Express_Backups

Paso B: Descargue la herramienta SQLCMD (si procede).

La utilidad sqlcmd permite introducir sentencias Transact-SQL, procedimientos del sistema y archivos de script. En SQL Server 2014 y versiones inferiores, la utilidad se envía como parte del producto. A partir de SQL Server 2016, la utilidad sqlcmd se ofrece como descarga independiente. Para obtener más información, revise la utilidad sqlcmd.

Paso C: crear de un archivo por lotes con el editor de texto.

En un editor de texto, cree un archivo por lotes con nombre Sqlbackup.bat y, después, copie el texto de uno de los siguientes ejemplos a ese archivo, según su caso:

  • Todos los escenarios siguientes usan D:\SQLBackups como marcador de posición. El script debe ajustarse a la unidad adecuada y a la ubicación de la carpeta de copia de seguridad de su entorno.

  • Si usa la autenticación de SQL, asegúrese de que el acceso a la carpeta esté restringido a los usuarios autorizados, ya que las contraseñas se almacenan en texto no cifrado.

Nota:

La carpeta de ejecución SQLCMD suele estar en las variables de ruta del servidor después de instalar SQL Server o después de instalarla como herramienta independiente. Pero si la variable de ruta no muestra esta carpeta, puede agregar su ubicación a la variable de ruta o especificar la ruta de acceso completa a la utilidad.

Ejemplo 1: copias de seguridad completas de todas las bases de datos de la instancia local con nombre de SQLEXPRESS con la autenticación de Windows.

 // Sqlbackup.bat
 sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'"

Ejemplo 2: copias de seguridad diferenciales de todas las bases de datos de la instancia local con nombre de SQLEXPRESS con un SQLLogin y su contraseña.

 // Sqlbackup.bat
sqlcmd -U <YourSQLLogin> -P <StrongPassword> -S .\SQLEXPRESS -Q "EXEC sp_BackupDatabases  @backupLocation ='D:\SQLBackups', @BackupType='D'"

Nota:

El SQLLogin debe tener al menos el rol de operador de copia de seguridad en SQL Server.

Ejemplo 3: registrar las copias de seguridad de todas las bases de datos en la instancia local con nombre de SQLEXPRESS con la autenticación de Windows

 // Sqlbackup.bat
 sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',@backupType='L'"

Ejemplo 4: copias de seguridad completas de la base de datos USERDB en la instancia local con nombre de SQLEXPRESS con la autenticación de Windows

 // Sqlbackup.bat
 sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName='USERDB', @backupType='F'"

Del mismo modo, puede hacer una copia de seguridad diferencial de USERDB pegando "D" en el parámetro @backupType y una copia de seguridad de registro de USERDB pegando "L" en el parámetro @backupType.

Paso D: programar un trabajo mediante el Programador de tareas de Windows para ejecutar el archivo por lotes que creó en el paso B. Para ello, siga estos pasos:

  1. En el equipo que ejecuta SQL Server Express, haga clic en Inicio y, a continuación, en el cuadro de texto, escriba programador de tareas.

    Captura de pantalla de la opción de la aplicación de escritorio del Programador de tareas en la barra de búsqueda del menú Inicio.

  2. En Mejor coincidencia, haga clic en Programador de tareas para iniciarlo.

  3. En el Programador de tareas, haga clic con el botón derecho del ratón en Biblioteca de programación de tareas y haga clic en Crear tarea básica....

  4. Escriba el nombre de la nueva tarea (por ejemplo, SQLBackup) y haga clic en Siguiente.

  5. Seleccione Diariamente para el Activador de tarea y haga clic en Siguiente.

  6. Establezca la recurrencia en un día y haga clic en Siguiente.

  7. Seleccione Iniciar un programa como acción y haga clic en Siguiente.

  8. Haga clic en Examinar, después, en el archivo por lotes creado en el paso C y, por último, en Abrir.

  9. Active la casilla Abrir el cuadro de diálogo Propiedades de esta tarea cuando haga clic en Finalizar.

  10. En la pestaña General,

    1. Revise las opciones de Seguridad y asegúrese de lo siguiente para la cuenta de usuario que ejecuta la tarea (listada en Al ejecutar la tarea, utilice la siguiente cuenta de usuario:)

      La cuenta debe tener al menos permisos de Lectura y Ejecución para ejecutar la utilidad sqlcmd. Además,

      • Si usa la autenticación de Windows en el archivo por lotes, asegúrese de que el propietario de la tarea tiene permiso para realizar copias de seguridad de SQL.

      • Si usa la autenticación de SQL en el archivo por lotes, el usuario de SQL debe tener los permisos necesarios para realizar copias de seguridad de SQL.

    2. Ajuste otras configuraciones según sus requisitos.

Sugerencia

Como prueba, ejecute el archivo por lotes del paso C desde un símbolo del sistema que se inicie con la misma cuenta de usuario que posee la tarea.

Al usar el procedimiento descrito en este artículo, tenga en cuenta lo siguiente:

  • El servicio del Programador de Tareas debe estar en funcionamiento en el momento en que la tarea está programada para su ejecución. Le recomendamos definir el tipo de inicio para este servicio en Automático. Así se garantizará que el servicio se ejecuta incluso si se produce un reinicio.

  • Debe haber mucho espacio en la unidad de disco en la que se escribirán las copias de seguridad. Te recomendamos que limpies regularmente los archivos antiguos de la carpeta Backup para asegurarte de que no te quedas sin espacio en disco. El script no contiene la lógica para borrar archivos antiguos.

Referencias adicionales

Introducción al Programador de tareas