SQL Server 2008: Recuperando status de execução dos jobs via script
Publicado; 30/04/2010 Arquivado em: Artigos, SQL Scripts, SQL Server Deixe um comentárioUma das tarefas diárias do DBA é a de examinar cuidadosamente o status de execução de todos os jobs agendados. Isso pode ser feito pela interface gráfica, é claro. Mas um bom script pode facilitar esse procedimento, ainda mais se a lista de jobs for extensa e se você precisar saber apenas aqueles que apresentaram falha na execução. Desta forma, elaborei a query abaixo disponibilizada.
use msdb
/*
Basicamente usar as tabelas sysjob e sysjobhistory do MSDB.
O step “0” não existe de verdade, ele apenas indica o status geral da execução completa do job.
Os demais steps existem e indicam o status individual de cada step.
*/
— Set para 1 caso queira que seja listado apenas os jobs que apresentaram erro
DECLARE @ListarSohErros BIT = 1;
— Set para 1 caso queira visualizar apenas o status do job e não dos steps.
DECLARE @ListarSohStep0 BIT = 1;
—
SELECT
j.name,
h.step_id,
h.step_name,
(CASE h.run_status
WHEN 0 THEN ‘Failed’
WHEN 1 THEN ‘Succeeded’
WHEN 2 THEN ‘Retry’
WHEN 3 THEN ‘Canceled’
WHEN 4 THEN ‘In Progress’
END) [status],
h.message,
h.run_date,
h.run_time,
h.run_duration
FROM sysjobs j
JOIN sysjobhistory h on j.job_id = h.job_id
WHERE h.run_status = (CASE WHEN @ListarSohErros = 0 THEN h.run_status ELSE 0 END)
AND h.step_id = (CASE WHEN @ListarSohStep0 = 0 THEN h.step_id ELSE 0 END)
ORDER BY j.name, h.step_id;