Consulte esta consulta relacionada: Qual é uma boa ferramenta para visualizar trabalhos do SQL Agent?
No entanto, não estou atrás de uma ferramenta visual, pois estou procurando construir minha própria visualização. Este é meu ponto de partida, mas você concordará que está faltando muito.
select TOP(1000)
h.run_date, min(h.run_time), j.name, j.description, max(h.run_duration) run_duration
from msdb..sysjobhistory h
join msdb..sysjobs j on j.job_id = h.job_id
group by h.run_date, j.name, j.description, h.instance_id, j.job_id
having max(h.run_duration) > 1000 -- << -- 10 minutes encoded in HHMMSS (digits)
order by h.run_date desc, 2 desc
O ponto crucial é que não parece haver uma chave para a sysjobhistory
tabela para identificá-la como uma "instância" específica de um arquivo sysjob
. Por exemplo, uma tarefa iniciada às 12h30 com 4 etapas é inserida sysjobhistory
4 vezes com diferentes instance_ids (exclusivos). Todos estão vinculados ao sysjob.job_id
valor, mas esse é o cronograma, não a invocação do trabalho. Existe outra tabela em que eu deveria olhar?
Isso provavelmente é bastante simples, já que o SSMS é capaz de fazer isso facilmente.
Você só precisa filtrar onde step_id = 0, que é o resultado do trabalho e tem a duração total da execução.