Skip to content

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.

tareas-programadas-con-sqlcmd

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

tareas-programadas-SQL-Server-express
  • 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.

tareas-programadas-sqlcmd

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.

www.datoptim.com
I love working on SQL Server Performance Tuning and finding the origin of the problems. Music and SQL Server passionate.

Comments (2)

Los comentarios están cerrados.

Carrito
Volver arriba