Esta contribuição tem o objetivo de apresentar como através das visões de sistema(Systems Views) sysjobssysjobsteps sysjobhistory (armazenadas fisicamente no banco de sistema MSDB) podemos no Microsoft SQL Server a partir da versão 2008 obter a relação de informações sobre a execução de Jobs e seus steps agendados em um servidor ou instância SQL Server.

Uma dos principais recursos e funcionalidades existentes no Microsoft SQL Server a partir da versão 2000 é a capacidade de executar tarefas agendadas conhecidas tecnicamente como Jobs, sendo este um recurso programado para executar uma ou mais sequência de passos (Steps) que devem processar instruções programadas que permitem realizar as mais variadas e diversas ações possíveis.

Através desta capacidade, o Microsoft SQL Server nos permite consultar através de interface gráfica e principalmente por linha de comando o histórico de execução de cada job ou todos que encontram-se ativos e com execução sendo realizada.

Dentre as informações que podemos obter destaco:

O trecho de código apresentado abaixo e parte integrante do arquivo compartilhado nesta contribuição, o qual ilustra como podemos fazer uso das visões de sistema destacada no início desta contribuição:

 

SQL
Edit|Remove
,msdb.dbo.agent_datetime(run_daterun_timeas 'RunDateTime' 
,((jbs_Step.last_run_duration/10000*3600 + (jbs_Step.last_run_duration/100)%100*60 + jbs_Step.last_run_duration%100 + 31 ) / 60)  
  as 'LastRunDurationMinute' 
,CASE WHEN h.run_status = 0 THEN 'Failed' 
WHEN h.run_status = 1 THEN 'Succeeded' 
WHEN h.run_status = 2 THEN 'Retry' 
WHEN h.run_status = 3 THEN 'Canceled' 
ELSE 'Unknown' END AS LastRunStatus 
,CONVERT(SMALLDATETIMEGETDATE()) AS DataColeta 
FROM 
[msdb].[dbo].[sysjobsAS jbs 
LEFT JOIN [msdb].[dbo].[sysjobstepsAS jbs_Step ON jbs.[job_id] = jbs_Step.[job_id] 
  INNER JOIN 
msdb.dbo.sysjobhistory  h ON jbs_Step.job_id = h.job_id AND jbs_Step.step_id = h.step_id AND h.step_id <> 0   
WHERE  
msdb.dbo.agent_datetime(run_daterun_time) > DATEADD(DAY, -1GETDATE()) 
ORDER BY [JobName], jbs_Step.step_id
 A Figura 1 apresentada abaixo, ilustra a lista de colunas obtidas após a execução do script compartilhado nesta contribuição:

  
Figura 1 - Relação de colunas apresentadas após a execução do script compartilhado nesta contribuição .