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

sp_add_schedule vs sp_add_jobschedule dans SQL Server :quelle est la différence ?

Si vous êtes en train de créer un travail SQL Server Agent avec T-SQL, vous vous demandez peut-être s'il faut créer sa planification avec le sp_add_schedule procédure stockée ou le sp_add_jobschedule procédure.

Voici une explication rapide de la différence entre ces deux procédures.

La différence

  • Le sp_add_schedule La procédure crée une planification, mais ne la rattache à aucune tâche. Pour ce faire, vous devez utiliser le sp_attach_schedule procédure.
  • Le sp_add_jobschedule procédure crée le planning et le rattache à une tâche donnée, le tout en une seule fois.

Par conséquent, sp_add_jobschedule peut être utilisé si vous devez créer une nouvelle planification pour une tâche spécifique et que cette tâche existe déjà. Si vous créez une planification pour plusieurs tâches et qu'aucune d'entre elles n'existe encore, vous pouvez utiliser sp_add_schedule . Ensuite, vous pouvez utiliser sp_attach_schedule pour le joindre à vos travaux plus tard.

Mais cela ne veut pas dire que vous ne pouvez pas utiliser sp_add_schedule au lieu de sp_add_jobschedule si le travail existe déjà.

Utilisation de sp_add_schedule (en conjonction avec sp_attach_schedule ) vous permet de séparer le processus de création des planifications et de les attacher aux travaux. Vous pouvez toujours utiliser cette combinaison même lors de la création d'une seule tâche avec une seule planification.

En d'autres termes, vous pouvez utiliser sp_add_schedule au lieu de sp_add_jobschedule pour tous vos travaux de l'Agent SQL Server.

Exemple

Le sp_add_jobschedule Procédure

Le sp_add_jobschedule La procédure crée une planification pour un travail donné de l'Agent SQL Server. Lorsque vous appelez cette procédure, vous devez fournir le nom ou l'ID d'une tâche à laquelle vous souhaitez qu'elle s'applique.

Fondamentalement, cette procédure crée un calendrier et l'attache à un seul travail.

Voici un exemple de création d'une tâche et d'utilisation de sp_add_jobschedule procédure stockée :

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;

Lorsque vous regardez le sp_add_jobschedule procédure, le @job_name L'argument fournit le nom du travail. Le @name l'argument fournit le nom que vous souhaitez donner au planning.

Le sp_add_schedule Procédure

Le sp_add_schedule La procédure vous permet de créer une planification sans avoir à spécifier une tâche à laquelle la joindre.

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.

Voici un exemple :

EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
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).

Joindre un sp_add_jobschedule Horaire

Il est important de noter que sp_attach_schedule peut joindre des horaires qui ont été créés avec sp_add_schedule et avec sp_add_jobschedule .

En d'autres termes, créer un planning avec sp_add_jobschedule ne le limite pas uniquement au travail que vous avez spécifié lors de la création de la planification. il est toujours disponible pour être joint à d'autres tâches ultérieurement à l'aide de sp_attach_schedule .