Listando os jobs no servidor MS SQL Server

Dando continuidade na sugestão de um “book” de administração de banco de dados, onde já publiquei um script t-sql que consulta o tamanho dos bancos de dados, agora vamos ver como listar os jobs que estão presentes no servidor. A idéia central disso é ter uma query pronta, de tal forma que rapidamente as informações estejam coletadas. Nos dias atuais é sempre importante ter tudo a mão, a produtividade é fundamental.

Como resultado, a query retorna as seguintes informações:

  • Nome do Job
  • Ativo (Yes/No)
  • Nome do agendamento
  • Frequência
  • Unidade de tempo
  • Data de ativação
  • Data de término
  • Data da próxima execução
  • Horário
  • Data de criação do job

Para verificar o status de execução dos jobs por query, é um outro esquema diferente (e que apresentarei em um outro momento). A ideia principal desta query é que de uma forma visual é possível identificar todos os jobs de uma forma global: imagine um cenário onde é necessário acrescentar um novo job. Qual seria a melhor frequencia ou o melhor horário para este novo job, de tal forma que não sobrecarregue tanto seu servidor?? Execute a query e analise.

 

SELECT DISTINCT substring(a.name,1,100) AS [Job Name], 
	'Enabled'=case 
	WHEN a.enabled = 0 THEN 'No'
	WHEN a.enabled = 1 THEN 'Yes'
	end, 
    	substring(b.name,1,30) AS [Name of the schedule],
	'Frequency of the schedule execution'=case
	WHEN b.freq_type = 1 THEN 'Once'
	WHEN b.freq_type = 4 THEN 'Daily'
	WHEN b.freq_type = 8 THEN 'Weekly'
	WHEN b.freq_type = 16 THEN 'Monthly'
	WHEN b.freq_type = 32 THEN 'Monthly relative'	
	WHEN b.freq_type = 32 THEN 'Execute when SQL Server Agent starts'
	END,	
	'Units for the freq_subday_interval'=case
	WHEN b.freq_subday_type = 1 THEN 'At the specified time' 
	WHEN b.freq_subday_type = 2 THEN 'Seconds' 
	WHEN b.freq_subday_type = 4 THEN 'Minutes' 
	WHEN b.freq_subday_type = 8 THEN 'Hours' 
	END,	
	cast(cast(b.active_start_date as varchar(15)) as datetime) as active_start_date,	
	cast(cast(b.active_end_date as varchar(15)) as datetime) as active_end_date,	
	cast(cast(c.next_run_date as varchar(15)) as datetime) as next_run_date,	
	
	Stuff(Stuff(right('000000'+Cast(c.next_run_time as Varchar),6),3,0,':'),6,0,':') as Run_Time,	
	
	b.date_created
	
FROM msdb..sysjobhistory d 
INNER JOIN msdb..sysjobs a ON a.job_id = d.job_id 
INNER JOIN msdb..sysJobschedules c ON a.job_id = c.job_id 
INNER JOIN msdb..SysSchedules b on b.Schedule_id=c.Schedule_id

 

Qual o tipo de informação de seu servidor de banco de dados gostaria de acrescentar? Eu sei, existem inúmeras e tempo pra implementar as vezes é um inimigo. Que tal compartilhar uma sugestão? Deixe seu comentário, compartilhe e até a próxima!

 

Deixe uma resposta