Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment exécuter les travaux de l'Agent SQL Server qui sont répertoriés dans la table SQL

a) Créer un proc qui parcourt la liste des procs avec la frequency appropriée valeur, les exécute et met à jour lastrun colonne.

  1. Créez un argument @frequency dedans, faites-le passer à l'extérieur.
  2. Filtrer votre liste de proc avec cet argument
  3. Parcourir la liste des procs avec cette "fréquence" et exécuter les procs

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) Créez des tâches planifiées pour exécuter cette procédure

  1. Créer une tâche "PROCÉDURES QUOTIDIENNES" , attribuez une planification à cette tâche pour qu'elle s'exécute tous les jours.

    Ajouter une étape de travail avec T-SQL :exec dbo.RunProcs @Frequency = 'day'

  2. Créer une tâche "PROCÉDURES HEBDOMADAIRES" , attribuez une planification à cette tâche pour qu'elle s'exécute chaque semaine

    Ajouter une étape de travail avec T-SQL :exec dbo.RunProcs @Frequency = 'week'

  3. Créer une tâche "PROCÉDURES MENSUELLES" , attribuez une planification à cette tâche pour qu'elle s'exécute tous les mois

    Ajouter une étape de travail avec T-SQL :exec dbo.RunProcs @Frequency = 'month'