sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man kör SQL Server Agent-jobb som är listade i SQL-tabellen

a) Skapa en proc som går igenom en lista med proc med lämplig frequency värde, kör dem och uppdaterar lastrun kolumn.

  1. Gör ett argument @frequency i den, skicka den utanför.
  2. Filtrera din proc-lista med detta argument
  3. Bläddra igenom listan över processer med denna "frekvens" och kör processer

t.ex.

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) Skapa schemalagda jobb för att köra denna proc

  1. Skapa ett jobb DAGLIGA PROC. , tilldela ett schema till det här jobbet så att det körs varje dag.

    Lägg till ett jobbsteg med T-SQL:exec dbo.RunProcs @Frequency = 'day'

  2. Skapa ett jobb "WEEKLY PROCS" , tilldela ett schema till det här jobbet så att det körs varje vecka

    Lägg till ett jobbsteg med T-SQL:exec dbo.RunProcs @Frequency = 'week'

  3. Skapa ett jobb "MÅNADLIGA PROCS" , tilldela ett schema till det här jobbet så att det körs varje månad

    Lägg till ett jobbsteg med T-SQL:exec dbo.RunProcs @Frequency = 'month'




  1. @OneToMany-fel i MySQL:Kan inte ta bort eller uppdatera en överordnad rad:en främmande nyckel-begränsning misslyckas

  2. Oracle PL/SQL-sekvensen ökar inte som förväntat med objektkonstruktörer

  3. Använder union och order by-klausul i mysql

  4. Visual studio 2010 och SQL Server