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!