viernes, 4 de octubre de 2013

Script Para Consultar el Historial de Ejecución de un Job

Amigos,

    Cuantas veces han tratado de ver el historial de ejecución de un job por consola haciendo botón derecho sobre el job y "view history" y se han encontrado con el molesto cartelito de "Time Out Expired", quedando vuestras manos vacías?

     Estoy seguro que muchas veces... Ppor ejemplo en ocasión del fallo de un Job ante la necesidad de conocer  el mensaje del error del job....

     Pues bien, les traigo un script super práctico que les permitirá saber, no solo el motivo en caso de un error o simplemente el detalle de lo ejecutado en caso de un job exitoso, sino también la duración en la ejecución del job y el resultado final de mismo.

     Entonces.. tengan a mano este script también cuando sospechen que un job "esta tardando en ejecutarse más que hace xx tiempo" . Con este script prontamente podrán evacuar esa duda.

     Con uds el script, solo seteen el run_date para limitar la fecha para la cual quieren la data.

     Cualquier duda como siempre quedo a disposición, saludos!!

 ----------------------------------------------------------------------
-- Detalle: Estudia La Historia de Ejecución de un Job A Partir de una Fecha
-- Tip: Utiliza la tablas msdb SysJobHistory/SysJobs    
-----------------------------------------------------------------------


 use msdb
 select
 step_id,
 message,
 run_date,
 case
   len(run_duration) when  6 then left(convert(varchar(6), run_duration),2)+':'+substring(convert(varchar(6), run_duration),3,2)+':'+right(convert(varchar(6),run_duration),2)
                     when  5 then '0'+left(convert(varchar(5), run_duration),1)+':'+substring(convert(varchar(5), run_duration),2,2)+':'+right(convert(varchar(6),run_duration),2)   
                     when  4 then '00'+':'+left(convert(varchar(4),run_duration),2)+':'+right(convert(varchar(4),run_duration),2)
                     when  3 then '00:0'+left(convert(varchar(3),run_duration),1)+':'+right(convert(varchar(4),run_duration),2)     
        end       
         as 'run_duration',
 case run_status when 0 then 'failed'
                  when  1 then 'succeded'
                  when 2 then 'retry'
                  when 3 then 'canceled'
                 end as 'run_status'
 from
 SysJobHistory as a
 --
 left join SysJobs  as b
 on a.job_id = b.job_id
 --
where
b.name = 'DBA - Indexes Optimize - Arcalltv - Miercoles 6 AM' and
run_date > 20130902
order by run_date

2 comentarios:

  1. me ayudo bastante, y le agregue algo mas:
    INNER JOIN dbo.sysjobsteps js
    ON js.job_id = A.job_id

    ResponderEliminar