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

Créer une planification d'agent SQL Server avec T-SQL

Lorsque vous utilisez T-SQL, vous pouvez utiliser le sp_add_schedule procédure stockée pour ajouter une planification de l'Agent SQL Server.

Cette procédure crée la planification, mais elle ne la rattache à aucune tâche. Pour le joindre à une tâche, vous devez utiliser le sp_attach_schedule procédure.

Vous pouvez également utiliser sp_add_jobschedule pour créer le planning et joindre le tout avec la même procédure.

Exemple de sp_add_schedule Procédure

Voici un exemple qui utilise sp_add_schedule pour créer un nouveau planning :

EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO

Cette procédure stockée accepte plus d'arguments que j'ai inclus dans cet exemple, mais ce sont quelques-uns des plus courants. Consultez les tableaux ci-dessous pour un aperçu des valeurs acceptées.

@schedule_name est un argument obligatoire, mais les autres sont facultatifs et ont des paramètres par défaut au cas où vous ne les fourniriez pas.

Nous pouvons maintenant utiliser sp_attach_schedule pour joindre ce planning à une tâche existante :


EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO

Lorsque vous utilisez sp_attach_schedule , vous devez fournir le nom de la tâche ou son ID (mais pas les deux), ainsi que le nom ou l'ID de la planification (mais pas les deux).

Exemple de sp_add_jobschedule Procédure

Voici un exemple qui utilise sp_add_jobschedule pour créer un nouveau planning et le rattacher à une tâche, le tout en une seule fois :

EXEC sp_add_jobschedule 
    @job_name = N'BackupMusicDB',
    @name = N'Weekly_Sun_3AM',
    @freq_type = 8,
    @freq_interval = 1,
    @freq_recurrence_factor = 1,
    @active_start_time = 30000;

Avec cette procédure, le @job_name l'argument fournit le nom du travail et le @name l'argument fournit le nom que vous souhaitez donner au planning.

Valeurs des paramètres

La façon dont les données de planification sont stockées dans le msdb base de données complique un peu la planification des travaux avec T-SQL.

Les valeurs de date/heure sont stockées en tant que int les types. Le type de fréquence est exprimé sous la forme d'un int , ainsi que les valeurs d'intervalle et diverses autres options.

Vous trouverez ci-dessous un aperçu des valeurs acceptées pour les paramètres fournis dans les exemples ci-dessus.

@freq_type

Cet argument spécifie quand un travail doit être exécuté. Il accepte les valeurs suivantes :

Valeur Description
1 Une fois
4 Quotidien
8 Hebdomadaire
16 Mensuel
32 Mensuel, par rapport à freq_interval
64 Exécuter au démarrage du service SQL Agent
128 Exécuter lorsque l'ordinateur est inactif

@freq_interval

Cet argument spécifie les jours pendant lesquels un travail est exécuté.

Cet argument dépend de la valeur de @freq_type argument, comme indiqué dans le tableau suivant :

Valeur de freq_type Effet sur freq_interval
1 (une fois) freq_interval n'est pas utilisé.
4 (quotidien) Chaque freq_interval jours.
8 (hebdomadaire) freq_interval est un ou plusieurs des éléments suivants (combinés avec un OR opérateur logique):

1 (Dimanche)

2 (Lundi)

4 (Mardi)

8 (Mercredi)

16 (Jeudi)

32 (Vendredi)

64 (samedi)
16 (mensuel) Sur le freq_interval jour du mois.
32 (relatif mensuel) freq_interval est l'un des suivants :

1 (Dimanche)

2 (Lundi)

3 (Mardi)

4 (Mercredi)

5 (Jeudi)

6 (Vendredi)

7 (Samedi)

8 (Jour)

9 (Jour de la semaine)

10 (Jour de week-end)
64 (quand le service SQLServerAgent démarre) freq_interval n'est pas utilisé.
128 freq_interval n'est pas utilisé.

@freq_recurrence_factor

Ceci spécifie le nombre de semaines ou de mois entre l'exécution planifiée d'un travail.

C'est int , avec une valeur par défaut de 0 , et n'est utilisé que si freq_type est 8 , 16 , ou 32 .

@active_start_time

Spécifie l'heure de n'importe quel jour entre le @active_start_date et le @active_end_date arguments pour commencer l'exécution d'un travail. @active_start_time est entier , avec une valeur par défaut de 000000 , qui indique 12:00:00 A.M. sur une horloge de 24 heures, et doit être saisi à l'aide du formulaire HHMMSS.

@active_start_date

Bien qu'il ne soit pas inclus dans mes exemples ci-dessus, le @active_start_date L'argument permet de spécifier la date à laquelle l'exécution d'un travail peut commencer. C'est int , avec par défaut NULL, qui indique la date du jour. La date est au format AAAAMMJJ.

@active_end_date

Vous pouvez également fournir un @active_end_date argument, qui spécifie la date à laquelle l'exécution d'un travail peut s'arrêter.

@active_end_date est entier , avec une valeur par défaut de 99991231 , qui indique le 31 décembre 9999. La date est au format AAAAMMJJ.

Plus d'informations

Consultez la documentation de Microsoft pour sp_add_schedule et/ou la documentation de Microsoft pour sp_add_jobschedule pour plus de détails sur les différents arguments et leurs valeurs acceptées.