Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como executar trabalhos do SQL Server Agent listados na tabela SQL


a) Crie um proc que execute uma lista de procs com a frequency apropriada value, os executa e atualiza lastrun coluna.
  1. Crie um argumento @frequency nele, passe-o para fora.
  2. Filtre sua lista de proc com este argumento
  3. Percorra a lista de procs com esta "frequência" e execute procs

por exemplo.
alter proc dbo.RunProcs
  @Frequency varchar(50)
as
begin
  declare @crProcs cursor 

  set @crProcs = cursor fast_forward for
  select m.ProcName
  from dbo.Maintainance m
  where m.Frequency = @Frequency
  order by 1

  ...
  while @@fetch_status = 0
  beign
      begin try
        exec @ProcName
        ...
        update -> succeded
        ...
      end try
      begin catch
        ...
        update -> failed
        ...
      end catch
    fetch ...
  end

  return 1
end

b) Crie trabalhos agendados para executar este proc

  1. Criar um trabalho "PROCESSOS DIÁRIOS" , atribua um agendamento a esse trabalho para executá-lo todos os dias.

    Adicione uma etapa de trabalho com T-SQL:exec dbo.RunProcs @Frequency = 'day'

  2. Criar um trabalho "PROCESSOS SEMANAIS" , atribua um agendamento a este trabalho para executá-lo toda semana

    Adicione uma etapa de trabalho com T-SQL:exec dbo.RunProcs @Frequency = 'week'

  3. Crie um trabalho "PROCESSOS MENSAIS" , atribua um agendamento a este trabalho para executá-lo todos os meses

    Adicione uma etapa de trabalho com T-SQL:exec dbo.RunProcs @Frequency = 'month'