sp_add_schedule (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Crée une planification qui peut être utilisée par un nombre illimité de travaux.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_add_schedule
    [ @schedule_name = ] 'schedule_name'
    [ , [ @enabled = ] enabled ]
    [ , [ @freq_type = ] freq_type ]
    [ , [ @freq_interval = ] freq_interval ]
    [ , [ @freq_subday_type = ] freq_subday_type ]
    [ , [ @freq_subday_interval = ] freq_subday_interval ]
    [ , [ @freq_relative_interval = ] freq_relative_interval ]
    [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @active_start_time = ] active_start_time ]
    [ , [ @active_end_time = ] active_end_time ]
    [ , [ @owner_login_name = ] 'owner_login_name' ]
    [ , [ @schedule_uid = ] schedule_uid OUTPUT ]
    [ , [ @schedule_id = ] schedule_id OUTPUT ]
    [ , [ @originating_server = ] server_name ] /* internal */
[ ; ]

Arguments

[ @schedule_name = ] 'schedule_name'

Nom de la planification. @schedule_name est sysname, sans valeur par défaut.

[ @enabled = ] activé

Indique l'état actuel de la planification. @enabled est tinyint, avec une valeur par défaut (1activée). Si 0la planification n’est pas activée. Lorsque la planification n’est pas activée, aucun travail n’est exécuté sur cette planification.

[ @freq_type = ] freq_type

Valeur indiquant à quel moment un travail doit être exécuté. @freq_type est int, avec une valeur par défaut 0, et peut être l’une de ces valeurs.

Valeur Description
1 Une fois
4 Quotidiennement
8 Hebdomadaire
16 Mensuelle
32 Mensuel, par rapport à @freq_interval
64 Exécuter quand le service SQL Server Agent démarre
128 Exécuter lorsque l’ordinateur est inactif (non pris en charge dans Azure SQL Managed Instance)

[ @freq_interval = ] @freq_interval

Jours d’exécution d’un travail. @freq_interval est int, avec une valeur par défaut 1, et dépend de la valeur de @freq_type.

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

1 = Dimanche
2 = Lundi
4 = Mardi
8 = Mercredi
16 = jeudi
32 = vendredi
64 = Samedi
16 (mensuel) Le @freq_interval jour du mois.
32 (relatif mensuel) @freq_interval est l’un des éléments suivants :

1 = Dimanche
2 = Lundi
3 = Mardi
4 = Mercredi
5 = jeudi
6 = vendredi
7 = Samedi
8 = Jour
9 = Jour de la semaine
10 = Jour du week-end
64 (au démarrage du service SQLServerAgent) @freq_interval n’est pas utilisé.
128 @freq_interval n’est pas utilisé.

[ @freq_subday_type = ] freq_subday_type

Spécifie les unités de @freq_subday_interval. @freq_subday_type est int, avec une valeur par défaut 0, et peut être l’une de ces valeurs.

Valeur Description (unité)
0x1 À une heure spécifiée
0x2 Secondes
0x4 Minutes
0x8 heures

[ @freq_subday_interval = ] freq_subday_interval

Nombre de périodes @freq_subday_type à effectuer entre chaque exécution d’un travail. @freq_subday_interval est int, avec la valeur par défaut 0. L’intervalle doit être d’au moins 10 secondes. @freq_subday_interval est ignoré dans les cas où @freq_subday_type est égal à 1.

[ @freq_relative_interval = ] freq_relative_interval

L’occurrence d’un travail de @freq_interval chaque mois, si @freq_interval est de 32 (relatif mensuel). @freq_relative_interval est int, avec une valeur par défaut 0, et peut être l’une de ces valeurs. @freq_relative_interval est ignoré dans les cas où @freq_type n’est pas égal à 32.

Valeur Description (unité)
1 First
2 Second
4 Third
8 Quatrième
16 Dernier

[ @freq_recurrence_factor = ] freq_recurrence_factor

Nombre de semaines ou de mois devant s'écouler entre chaque exécution planifiée d'un travail. @freq_recurrence_factor est utilisé uniquement si @freq_type est 8, 16ou 32. @freq_recurrence_factor est int, avec la valeur par défaut 0.

[ @active_start_date = ] active_start_date

Date à laquelle l’exécution d’un travail peut commencer. @active_start_date est int, avec une valeur par défaut NULL, qui indique la date du jour. La date est mise en forme en tant que yyyyMMdd. Si @active_start_date n’est pas NULL, la date doit être supérieure ou égale à 19900101.

Une fois la planification créée, passez en revue la date de début et vérifiez qu’il s’agit de la date correcte. Pour plus d’informations, consultez la section « Date de début de la planification » dans Créer et attacher des planifications à des travaux.

Pour les planifications hebdomadaires ou mensuelles, l’Agent ignore si @active_start_date est dans le passé et utilise plutôt la date actuelle. Lorsqu’une planification SQL Server Agent est créée à l’aide sp_add_schedule d’une option permettant de spécifier le paramètre @active_start_date date à laquelle l’exécution du travail commence. Si le type de planification est hebdomadaire ou mensuel et que le paramètre @active_start_date est défini sur une date dans le passé, le paramètre @active_start_date est ignoré et la date actuelle est utilisée pour @active_start_date.

[ @active_end_date = ] active_end_date

Date à laquelle l'exécution d'un travail peut s'arrêter. @active_end_date est int, avec une valeur par défaut , 99991231qui indique le 31 décembre 9999. Mise en forme en tant que yyyyMMdd.

[ @active_start_time = ] active_start_time

Heure de tout jour entre @active_start_date et @active_end_date pour commencer l’exécution d’un travail. @active_start_time est int, avec une valeur par défaut , 000000qui indique 12 :00 :00 A.M. sur une horloge de 24 heures et doit être entrée à l’aide du formulaireHHmmss.

[ @active_end_time = ] active_end_time

Heure de tous les jours entre @active_start_date et @active_end_date pour mettre fin à l’exécution d’un travail. @active_end_time est int, avec une valeur par défaut 235959, qui indique 11 :59 :59 P.M. sur une horloge de 24 heures, et doit être entrée à l’aide du formulaire HHmmss.

[ @owner_login_name = ] 'owner_login_name'

Nom du principal de serveur qui détient la planification. @owner_login_name est sysname, avec une valeur par défaut , NULLqui indique que la planification est détenue par le créateur.

[ @schedule_uid = ] sortie de schedule_uid

Identificateur unique de la planification. @schedule_uid est une variable de type uniqueidentifier.

[ @schedule_id = ] sortie de schedule_id

Identificateur pour la planification. @schedule_id est une variable de type int.

[ @originating_server = ] server_name

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Jeu de résultats

Aucune.

Notes

SQL Server Management Studio offre un moyen simple et graphique de gérer les tâches, et est recommandé pour la création et la gestion de l'infrastructure de travail.

Autorisations

Cette procédure stockée appartient au rôle db_owner . Vous pouvez accorder EXECUTE des autorisations pour n’importe quel utilisateur, mais ces autorisations peuvent être remplacées lors d’une mise à niveau de SQL Server.

D’autres utilisateurs doivent disposer de l’un des rôles de base de données fixes SQL Server Agent suivants dans la msdb base de données :

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Pour en savoir plus sur les autorisations de ces rôles, consultez Rôles de base de données fixes de l'Agent SQL Server.

Exemples

R. Créer une planification

L'exemple suivant crée une planification nommée RunOnce. Elle s'exécute une fois à 23:30 le jour où la planification est créée.

USE msdb;
GO

EXEC dbo.sp_add_schedule
    @schedule_name = N'RunOnce',
    @freq_type = 1,
    @active_start_time = 233000;
GO

B. Créer une planification, en attachant la planification à plusieurs travaux

L'exemple suivant crée une planification nommée NightlyJobs. Les travaux qui utilisent cette planification s'exécutent tous les jours lorsque l'heure indiquée par le serveur est 01:00. L'exemple joint la planification au travail BackupDatabase et au travail RunReports.

Remarque

Cet exemple suppose que les travaux BackupDatabase et RunReports existent déjà.

USE msdb;
GO

EXEC sp_add_schedule
    @schedule_name = N'NightlyJobs',
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 010000;
GO

EXEC sp_attach_schedule
    @job_name = N'BackupDatabase',
    @schedule_name = N'NightlyJobs';
GO

EXEC sp_attach_schedule
    @job_name = N'RunReports',
    @schedule_name = N'NightlyJobs';
GO