sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo ejecutar trabajos del Agente SQL Server que se enumeran en la tabla SQL

a) Cree un proceso que se ejecute a través de la lista de procesos con la frequency adecuada value, los ejecuta y actualiza lastrun columna.

  1. Haz un argumento @frequency en él, páselo desde afuera.
  2. Filtre su lista de procesos con este argumento
  3. Recorra la lista de procesos con esta "frecuencia" y ejecute procesos

por ejemplo

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) Crear trabajos programados para ejecutar este proceso

  1. Crear un trabajo "PROCESOS DIARIOS" , asigne un horario a este trabajo para que se ejecute todos los días.

    Agregue un paso de trabajo con T-SQL:exec dbo.RunProcs @Frequency = 'day'

  2. Crear un trabajo "PROCESOS SEMANALES" , asigne un horario a este trabajo para que se ejecute todas las semanas

    Agregue un paso de trabajo con T-SQL:exec dbo.RunProcs @Frequency = 'week'

  3. Crear un trabajo "PROCESOS MENSUALES" , asigne una programación a este trabajo para que se ejecute todos los meses

    Agregue un paso de trabajo con T-SQL:exec dbo.RunProcs @Frequency = 'month'