sql >> Database >  >> RDS >> Sqlserver

Hoe SQL Server Agent-taken uit te voeren die worden vermeld in de SQL-tabel

a) Maak een proc die door de lijst met proc's loopt met de juiste frequency waarde, voert ze uit en werkt lastrun bij kolom.

  1. Maak een argument @frequency erin, geef het dan naar buiten door.
  2. Filter je proc-lijst met dit argument
  3. Doorloop de lijst met procedures met deze "frequentie" en voer de procedures uit

bijv.

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) Maak geplande taken om dit proces uit te voeren

  1. Maak een vacature aan "DAGELIJKSE PROCS" , wijs een schema toe aan deze taak zodat deze elke dag wordt uitgevoerd.

    Voeg een taakstap toe met T-SQL:exec dbo.RunProcs @Frequency = 'day'

  2. Maak een vacature aan "WEKELIJKSE PROCS" , wijs een schema toe aan deze taak zodat deze elke week wordt uitgevoerd

    Voeg een taakstap toe met T-SQL:exec dbo.RunProcs @Frequency = 'week'

  3. Maak een vacature aan "MAANDELIJKSE PROCS" , wijs een schema toe aan deze taak zodat deze elke maand wordt uitgevoerd

    Voeg een taakstap toe met T-SQL:exec dbo.RunProcs @Frequency = 'month'




  1. Lead() en LAG() functionaliteit in SQL Server 2008

  2. WHERE-component in INSERT-instructie met mysql/php

  3. Hoe de uitvoer van de opgeslagen procedure terug te sturen naar een variabele in de sql-server

  4. Hoe ga je om met meerdere TimeZones in applicaties die data en tijden opslaan?