SQL Server Agent: ¿Por qué no sale en el historial la ejecución del job?
Estoy segura de que te ha pasado alguna vez lo que te voy a contar y para que no te vuelvas loco, te dejo por aquí la solución.
Como buen DBA o DBD, seguramente tendrás algún Job programado en tu SQL Server Agent. Un día acudes al historial de ejecuciones del Job y te encuentras con esta situación:
Lo primero que te preguntas, si no lo has confirmado antes es ¿pero mi job se ha ejecutado alguna vez?. Para confirmarlo, acudes al «Job Activity Monitor«
Y al hacer click ves algo así:
Donde se confirma que se ha ejecutado, y en el caso de la imagen, con éxito.
Entonces te sigues preguntando… «¿Por qué no salen datos en el historial? Quiero/Necesito ver el detalle de la ejecución«
La respuesta puede ser más sencilla de lo que piensas: tu agente no sólo ejecuta ese job, sino muchos más, y entre todos han llenado su log de historia de jobs.
SQL Server Agent, tiene un log de historia de jobs (Job history log) que para evitar problemas, tiene un tamaño máximo de filas. Si llega al límite, borra las más antiguas. Pero todo esto es configurable desde las propiedades el SQL Server Agent.
Una vez abierta las propiedades, hay que acudir a la página «Historia» (History).
Por defecto, viene configurado con una tamaño total limitado de 1000 filas y 100 filas por cada job. Pero como ves se puede cambiar la configuración:
- Quitando cualquier límite
- Cambiando la limitación de filas de todo el historial
- Cambiando la limitación de filas de cada job
¡Ojo! Porque la ventana que ves te puede crear confusión, y creer que puedes configurar una limpieza de filas y que cada X tiempo se borren las líneas aunque no se haya llegado al límite. No es así. Eso lo que hace es lanzar una purga según la fecha que indiques, pero no queda programado. Sería este comando el que lanzaría:
EXEC msdb.dbo.sp_purge_jobhistory @oldest_date='2024-09-07T13:06:57'
GO
Es decir, si quieres que la purga se quede programada, tendrás que crear un job que se encargue de eso o si ya tienes un job con tareas de mantenimiento del servidor, añadirlo como un paso más.
Por cierto, si te preguntas qué valor poner cada una de las limitaciones, es algo que depende mucho de cada entorno. No es lo mismo un SQL Server Agent que ejecuta pocos jobs que uno que ejecuta muchos. Como muchas preguntas sobre SQL Server, la respuesta es DEPENDE.
En resumen, si no ves la ejecución del job, es porque se ha borrado ya y para que no te vuelva a pasar, tendrás que ampliar el nº de filas del historial. Esta ejecución ya no podrás verla, pero sí las siguientes. Y si aún no te ha pasado, para que no te pase, plantéate si esa configuración que se establece por defecto es adecuada para ti.