viernes, 29 de mayo de 2020

Crear un JOB (Tarea Automática) en SQL SERVER

Buenas noches queridos lectores, el día de hoy les explicare los JOBS en SQL SERVER, un post que tenía tiempo queriendo hacer, pero no había tenido la oportunidad, pero comencemos pues con un poco de teoría.



Un JOB en base de datos sería lo que en Windows una tarea programada, pero con algunas caracteristicas especiales. Un Job son un bloque de instrucciones, definidos en pasos, que se ejecutan cada cierto tiempo. Cada paso tiene un numero ilimitado de instrucciones, así como podemos definir el flujo, es decir, si el paso se realiza correctamente, ir al siguiente paso, ir a un paso definido o salir del JOB. Puede resultar un poco complejo una explicación teórica, por lo cual vamos a la práctica que es lo que nos gusta y como aprendemos.



Hay dos manera de crear un JOB:

  • Por entorno gráfico
  • Por Transact - SQL
En este post veremos el entorno gráfico, el método Transact no es muy común, se utiliza cuando queremos modificar algo vía código, pero es demasiado complejo, sería sobre todo entenderlo, pues bien, veremos el entorno gráfico.

Antes de comenzar a crear un JOB, debemos especificar la tarea que queremos realizar, imaginemos que queremos ingresar a una tabla la hora de ejecución de un código, si falla por lo que sea, realizar otra acción

Ejemplo: Realizar un job que inserte la hora de ejecución del código en una tabla, si falla, enviar un correo avisando del error, 

Para empezar debemos asegurarnos que el Agente SQL este ejecutándose, con esto deducimos que en las versiones Express no esta disponible esta característica. 




Una vez que nos aseguramos que el AgenteSQL esta en ejecución, desde la herramienta Management Studio, abriremos el Menú AgenteSQL y buscaremos la Carpeta Jobs, al expandirla podemos observar que únicamente tiene un JOB, pero es un JOB de sistema.


Antes de empezar, vamos a crear una tabla para poder guardar los datos

use pruebas
go

create table EjemploJob
(id int primary key identity,
descripcion varchar(max),
run_date datetime
)

Una vez que tenemos la tabla creada vamos a crear el job para insertar datos, para eso realizaremos los siguientes pasos:

  • Expandir el grupo SQL Agent Server
  • Dar clic Derecho en la carpeta JOB
  • Dar clic en la opción New JOB
  • Capturar el nombre de JOB, el propietario, la categoría y la descripción (opcional)



  • Dar clic en Steps
  • Dar clic en New Step
  • Capturar el nombre del paso
  • El tipo del comando
  • La Base de Datos donde se va a ejecutar el comando
  • El comando al ejecutar 

insert into EjemploJob (descripcion, run_date) values ('Ejecución del job', GETDATE())



  • Presionar el botón OK.
  • Dar clic en la opción Advanced
  • Configurar la opción On success action, tiene tres opciones, pero nosotros elegiremos Quit the job reporting success.
  • Configuraremos el numero de intentos en 0, y el intervalo también en 0, esto es para indicarle cuantas veces reintentara en caso de error y en que intervalo de tiempo.
  • Configuraremos la opción On failure action, tiene tres opciones, pero nosotros elegiremos Quit de job reporting failure.
  • Presionar en el botón OK
  • Dar clic en la opción Shedules para programar la ejecución de JOB
  • Asignar un nombre a la programación
  • Seleccionar el tipo de recurrencia
  • Seleccionar la frecuencia de ejecución, en este caso será diario, cada 30 segundos
  • Presionar el botón OK
  • Dar clic en la opción Alerts, en caso que se requiera  configurar una alerta para el JOB, en este caso no vamos a configurar ninguna.
  • Dar clic en la opción Notifications
  • Marcar la casilla Email y seleccionar al operador que tenemos dado de alta
  • Presionar el botón OK, para grabar el JOB.
Después de 30 segundos comprobaremos que el JOB funciona haciendo la consulta a la tabla previamente creada, misma que se debe ingresar un registro cada 30 segundos.


select * from ejemplojob


Como vemos, la tabla se esta llenando cada 30 segundos de manera correcta, por lo que el JOB funciona correctamente.

Ahora, vamos a provocar un error en el JOB, y para eso vamos a borrar la tabla

drop table EjemploJob

Esto provocará un error en el JOB ya que la tabla no existirá, pero si recuerdan, configuramos el JOB para avisar a un operador en caso de que fallara, el operador era DBA, para eso tienen que estar configurados previamente las Alertas y Operadores, el cual esta la guía aquí. Al provocar el error, mandará un correo avisando al operador del error en el JOB.


Podemos ver el historial del JOB donde se nos informará si se ejecutó correctamente o hubo una falla en la ejecución. Para poder ver la historia del JOB daremos clic con el botón derecho sobre el JOB en la opción "View History"




Como vemos en la imagen, la historia del JOB nos muestra las veces que se ejecutó correctamente, las veces que no se ejecutó y en la parte de abajo la descripción del error.

A grandes rasgos, este es el uso de los JOBS, espero haya sido de su agrado y utilidad, cualquier duda estoy a la orden. Espero compartan, comenten o den clic en algún anuncio que les interese. 

Saludos

No hay comentarios.:

Publicar un comentario

LOG Shipping (Transvase de Registros) en SQL SERVER

 Log Shipping es una técnica de alta disponibilidad y recuperación de desastres que nos permitirá, restaurar una base de datos almacenada en...