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

Modifier une planification d'agent SQL Server (T-SQL)

Les planifications de l'Agent SQL Server peuvent être gérées indépendamment des travaux. Cela signifie que vous pouvez mettre à jour la planification directement sans mettre à jour la tâche elle-même.

Vous pouvez le faire avec le sp_update_schedule procédure stockée.

Exemple

Créer le calendrier

Tout d'abord, créons un calendrier :

EXEC sp_add_schedule 
    @schedule_name = N'Weekly_Sat_1AM',
    @freq_type = 8,
    @freq_interval = 64,
    @freq_recurrence_factor = 1,
    @active_start_time = 10000;

Nous pouvons maintenant utiliser sp_update_schedule pour modifier cet horaire.

Mettre à jour le calendrier

Voici un exemple de mise à jour du calendrier que nous venons de créer.

EXEC sp_update_schedule 
    @name = N'Weekly_Sat_1AM',
    @new_name = N'Weekly_Sun_4AM',
    @freq_type = 8,
    @freq_interval = 1,
    @freq_recurrence_factor = 1,
    @active_start_time = 40000;

Dans ce cas, j'ai changé le nom du planning, ainsi que l'intervalle de fréquence et l'heure de début.

Notez que sp_update_schedule modifie uniquement les réglages pour lesquels des valeurs de paramètre sont fournies. Si un paramètre est omis, le réglage actuel est conservé.

Par conséquent, puisque certains de nos paramètres sont restés les mêmes (en particulier, @freq_type et @freq_recurrence_factor ), nous aurions pu omettre complètement ces paramètres.

Comme ceci :

EXEC sp_update_schedule 
    @name = N'Weekly_Sat_1AM',
    @new_name = N'Weekly_Sun_4AM',
    @freq_interval = 1,
    @active_start_time = 40000;

Désactiver une programmation

Vous pouvez définir @enabled à 0 pour désactiver un programme.

Exemple :

EXEC sp_update_schedule 
    @name = N'Weekly_Sun_4AM',
    @new_name = N'Weekly_Sun_4AM (DISABLED)',
    @enabled = 0;

Dans cet exemple, j'ai également changé le nom pour indiquer que la tâche est désactivée.

Vérifier le calendrier

Vous pouvez utiliser sp_help_schedule pour afficher les paramètres actuels d'un programme.

Vous pouvez l'utiliser avec ou sans paramètres. Lorsqu'il est utilisé sans paramètres, il renvoie tous les programmes.

EXEC sp_help_schedule;

Si vous souhaitez uniquement voir les détails d'un programme, vous pouvez fournir le nom ou l'ID du programme.

Comme ceci :

EXEC sp_help_schedule 
	@schedule_name = 'Weekly_Sun_4AM';

Cependant, lorsque vous fournissez le nom, vous devrez vous souvenir du nom de famille que vous avez donné à l'horaire. Dans notre cas, si nous exécutons cette procédure après l'exemple précédent (lorsque nous avons désactivé la planification), nous aurions besoin de faire ceci :

EXEC sp_help_schedule 
	@schedule_name = 'Weekly_Sun_4AM (DISABLED)';

Cependant, l'ID de la programmation reste constant, vous pouvez donc l'utiliser quel que soit le nom de la programmation.

Exemple :

EXEC sp_help_schedule 
	@schedule_id = 16;

Lorsque vous utilisez l'ID, vous pouvez omettre le nom du paramètre si vous le souhaitez.

Exemple :

EXEC sp_help_schedule 16;

Qu'advient-il des tâches qui utilisent le calendrier modifié ?

Tous les travaux qui utilisent la planification utilisent immédiatement les nouveaux paramètres. Cependant, la modification d'une planification n'arrête pas les tâches en cours d'exécution.

Syntaxe complète

La syntaxe complète de sp_update_schedule va comme ceci :

sp_update_schedule   
    {   [ @schedule_id = ] schedule_id   
      | [ @name = ] 'schedule_name' }  
    [ , [ @new_name = ] new_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' ]  
    [ , [ @automatic_post =] automatic_post ]

Consultez la documentation de Microsoft pour sp_update_schedule pour une explication de chaque paramètre, ainsi que les valeurs que chacun accepte.