Lo primero para empezar el trabajo con SQL Server es preparar el ambiente. La instalación…
Tareas programadas con SQLCMD en SQL Server
Automatizar trabajos es parte de la productividad como administradores de servidores. Seguramente ya has trabajado con SQL Server Agent para la creación de Jobs, pero, ¿qué pasa cuando no lo tienes habilitado? Puede ser por una limitación de licenciamiento, sin embargo, aquí te muestro cómo hacer las tareas programadas con SQLCMD.
¿Cuándo utilizar sqlcmd?
Si todavía no conoces esta herramienta, puedes ver Cómo usar SQLCMD con SQL Server para ir pensando en la infinidad de posibilidades que tienes.
Después de ver las capacidades de SQLCMD seguro que tienes muchas ideas en mente, y si no, también puedes revisar las Alternativas de uso de SQLCMD.
Si bien las opciones son muchas, uno de los factores que puede influir en decidir usar tareas programadas con SQLCMD, es el no poder utilizar SQL Server Agent. El motivo más común, alcances del licenciamiento de SQL Server en su edición Express. Es importante que conozcas las ediciones y características soportadas de cada una de ellas.
¿Y cómo programas una tarea sin SQL Server Agent?
Nos apoyaremos con Task Scheduler de Windows. Ingenioso.
Si esa es su función: Programar una acción y asignar una hora de ejecución o repetir la tarea. (Exactamente lo mismo que hace el servicio del Agent). Entonces, ¿por qué no programar una acción de SQL Server?
¿Qué necesitas para hacer tareas programadas con SQLCMD?
Simple. Una acción sobre SQL Server y un disparador de esa acción.
Lo puedes resumir en dos archivos.
- 1 archivo .sql que realiza una acción en SQL Server
- 1 archivo .bat que será disparado por el Task Scheduler
ARCHIVO .sql
Contiene la acción que quieres realizar en SQL Server. ¿Qué tal la ejecución de backup?
Voy a hacer algo muy estándar sobre una base de datos; sin mucha configuración adicional.
BACKUP DATABASE [WideWorldImporters]
TO DISK = N'H:\BACKUPS\WideWorldImporters-Full.bak'
WITH NOFORMAT, NOINIT,
NAME = N'WideWorldImporters-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Este código lo guardo en un archivo llamado BKP_WWI.sql
ARCHIVO .bat
Simplemente realiza un llamado a la acción del primer archivo con la ayuda de SQLCMD.
sqlcmd -S.\SQL19 -iH:\DEMOS\Scheduler\BKP_WWI.sql
Fíjate bien que no está explícito un usuario y un password de conexión a la base de datos. Esto significa que se utilizará el usuario de Windows (o del dominio) con el que se está configurando la tarea.
Si quieres utilizar un usuario local de SQL, solamente deben adicionar los parámetros correspondientes a usuario y password.
sqlcmd -S.\SQL19 -UNombreUsuario -PPassword -iH:\DEMOS\Scheduler\BKP_WWI.sql
Este código lo guardo en un archivo llamado Call_BKP_WWI.bat
Ahora la magia con Task Scheduler
1) CREAR LA TAREA
- Asignar un nombre
- Seleccionar la ejecución con usuario conectado o no conectado
2) CONFIGURAR EL DISPARADOR
Iniciar un nuevo Trigger
Configurarlo de acuerdo a las necesidades
3) CONFIGURAR LA ACCIÓN
Iniciar una nueva acción
Seleccionar la acción a través del archivo .bat
4) ACEPTAR Y CONCLUIR LA TAREA
Concluidas las configuraciones, al aceptar los menús, simplemente debes confirmar la cuenta con la que se realizarán las acciones.
Muy sencillo ¿no? Eso es todo lo que necesitas hacer
Consideraciones importantes en las tareas programadas con SQLCMD
- Tener claros los permisos que requieres tanto a nivel de Sistema Operativo como en SQL Server.
- Los accesos a las carpetas utilizadas también deben estar claros.
- Por cualquier problema que tengas, puedes acudir al Event Viewer, al Log de SQL Server o incluso adicionar el parámetro output (-o) a sqlcmd para generar un archivo de salida.
- Si vas a utilizar un usuario local de SQL Server en el archivo bat, ten en cuenta que debes proteger las credenciales que se encuentran ahí. Lo mejor sería que pienses en utilizar una cuenta de Windows o de Dominio.
Comments (2)
Los comentarios están cerrados.
Excelente artículo, muchas gracias, me sirvió muchísimo.
Qué bueno Juan Carlos! Nos alegra mucho.