Compartir a través de


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

En este artículo se presenta cómo usar un script transact-SQL y un programador de tareas de Windows para automatizar copias de seguridad de bases de datos de SQL Server Express de forma programada.

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

Resumen

Las ediciones de SQL Server Express no ofrecen una manera de programar trabajos o planes de mantenimiento porque el componente Agente SQL Server no está incluido en estas ediciones. Por lo tanto, debe adoptar un enfoque diferente para realizar copias de seguridad de las bases de datos al usar estas ediciones.

Actualmente, los usuarios de SQL Server Express pueden realizar copias de seguridad de sus bases de datos mediante uno de los métodos siguientes:

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

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

Nota:

Esto solo se aplica a las ediciones express de SQL Server y no a SQL Server Express LocalDB.

Más información

Debe seguir estos cuatro pasos para realizar copias de seguridad de las bases de datos de SQL Server mediante el Programador de tareas de Windows:

Paso A: Crear un procedimiento almacenado para realizar una copia de seguridad de las bases de datos.

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

SQL_Express_Backups

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

La sqlcmd utilidad le permite escribir instrucciones Transact-SQL, procedimientos del sistema y archivos de script. En SQL Server 2014 y versiones anteriores, la utilidad se incluye como parte del producto. A partir de SQL Server 2016, sqlcmd la utilidad se ofrece como descarga independiente. Para obtener más información, consulte utilidad sqlcmd.

Paso C: Crear un archivo por lotes mediante el editor de texto.

En un editor de texto, cree un archivo por lotes denominado Sqlbackup.bat y, a continuación, copie el texto de uno de los ejemplos siguientes en ese archivo, en función de su escenario:

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

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

Nota:

La carpeta del SQLCMD archivo ejecutable suele estar en las variables path del servidor después de instalar SQL Server o después de instalarlo como herramienta independiente. Pero si la variable Path no enumera esta carpeta, puede agregar su ubicación a la variable Path 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 con nombre local de SQLEXPRESS mediante 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 con nombre local de SQLEXPRESS mediante sqlLogin y su contraseña.

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

Nota:

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

Ejemplo 3: Realizar copias de seguridad de todas las bases de datos en la instancia con nombre local de SQLEXPRESS mediante 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 mediante 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 realizar una copia de seguridad diferencial de USERDB pegando en "D" para el parámetro @backupType y una copia de seguridad de registros de USERDB pegando en "L" para 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 Iniciar y, a continuación, en el cuadro de texto escriba programador de tareas.

    Captura de pantalla de la opción Aplicación de escritorio programador de tareas en la barra de búsqueda de menú Inicio.

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

  3. En Programador de tareas, haga clic con el botón derecho 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 Diario para el desencadenador de tareas y haga clic en Siguiente.

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

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

  8. Haga clic en Examinar, haga clic en el archivo por lotes que creó en el paso C y, a continuación, haga clic en Abrir.

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

  10. En la pestaña General,

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

      La cuenta debe tener al menos permisos de lectura y ejecución para iniciar la utilidad sqlcmd. Además:

      • Si usa autenticación de Windows en el archivo por lotes, asegúrese de que el propietario de los permisos de tarea realice 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 opciones de configuración según sus requisitos.

Sugerencia

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

Tenga en cuenta lo siguiente cuando use el procedimiento que se documenta en este artículo:

  • El servicio Programador de tareas debe ejecutarse en el momento en que el trabajo está programado para ejecutarse. Se recomienda establecer el tipo de inicio de este servicio como Automático. Esto garantiza que el servicio se ejecute incluso en un reinicio.

  • Debe haber un montón de espacio en la unidad en la que se escriben las copias de seguridad. Se recomienda limpiar periódicamente los archivos antiguos de la carpeta Copia de seguridad para asegurarse de que no se agota el espacio en disco. El script no contiene la lógica para limpiar los archivos antiguos.

Referencias adicionales

Información general del programador de tareas