Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So führen Sie SQL Server Agent-Jobs aus, die in der SQL-Tabelle aufgeführt sind

a) Erstellen Sie eine Prozedur, die eine Liste von Prozeduren mit angemessener frequency durchläuft Wert, führt sie aus und aktualisiert lastrun Säule.

  1. Machen Sie ein Argument @frequency drin, weiter nach außen.
  2. Filtern Sie Ihre Prozessliste mit diesem Argument
  3. Liste der Procs mit dieser "Häufigkeit" durchlaufen und Procs ausführen

z. B.

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) Erstellen Sie geplante Jobs, um diesen Prozess auszuführen

  1. Erstellen Sie einen Job "DAILY PROCS" , weisen Sie diesem Job einen Zeitplan zu, damit er jeden Tag ausgeführt wird.

    Fügen Sie einen Jobschritt mit T-SQL hinzu:exec dbo.RunProcs @Frequency = 'day'

  2. Erstellen Sie einen Job "WEEKLY PROCS" , weisen Sie diesem Job einen Zeitplan zu, damit er jede Woche ausgeführt wird

    Fügen Sie einen Jobschritt mit T-SQL hinzu:exec dbo.RunProcs @Frequency = 'week'

  3. Erstellen Sie einen Job "MONTHLY PROCS" , weisen Sie diesem Job einen Zeitplan zu, damit er jeden Monat ausgeführt wird

    Fügen Sie einen Jobschritt mit T-SQL hinzu:exec dbo.RunProcs @Frequency = 'month'