Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eseguire i processi di SQL Server Agent elencati nella tabella SQL

a) Creare un processo che esegua l'elenco di processi con la frequency appropriata value, li esegue e aggiorna lastrun colonna.

  1. Crea un argomento @frequency in esso, passa il modulo all'esterno.
  2. Filtra la tua lista di proc con questo argomento
  3. Scorri l'elenco dei processi con questa "frequenza" ed esegui i processi

es.

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) Crea lavori pianificati per eseguire questo processo

  1. Crea un lavoro "PROCESSO GIORNALIERO" , assegna una pianificazione a questo processo per eseguirlo ogni giorno.

    Aggiungi una fase di lavoro con T-SQL:exec dbo.RunProcs @Frequency = 'day'

  2. Crea un lavoro "PROC. SETTIMANALI" , assegna una pianificazione a questo lavoro per eseguirlo ogni settimana

    Aggiungi una fase di lavoro con T-SQL:exec dbo.RunProcs @Frequency = 'week'

  3. Crea un lavoro "PROCEDURE MENSILI" , assegna una pianificazione a questo lavoro per eseguirlo ogni mese

    Aggiungi una fase di lavoro con T-SQL:exec dbo.RunProcs @Frequency = 'month'