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

Utilisation de sp_help_jobschedule dans SQL Server

Dans SQL Server, le sp_help_jobschedule procédure stockée renvoie des informations sur la planification des travaux.

Cet article fournit un aperçu de cette procédure stockée, y compris des exemples.

Syntaxe

La syntaxe officielle ressemble à ceci :

sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }  
     [ , [ @schedule_name = ] 'schedule_name' ]  
     [ , [ @schedule_id = ] schedule_id ]  
     [ , [ @include_description = ] include_description ]

Lorsque vous appelez sp_help_jobschedule , vous devez fournir soit le nom du travail, soit son ID (mais pas les deux), soit l'ID de planification. Vous pouvez également transmettre le nom de la planification, mais uniquement en combinaison avec l'ID de la tâche ou son nom.

La combinaison acceptée est un peu délicate. En gros, ça se passe comme ça :

Si schedule_id est spécifié, ni job_id ni job_name peut être spécifié. Sinon, le job_id ou job_name les paramètres peuvent être utilisés avec schedule_name .

Cependant, vous ne pourrez pas utiliser le schedule_id si un planning est associé à plusieurs travaux.

Notez que sp_help_jobschedule est dans le msdb base de données, il doit donc être exécuté à partir de là. Vous pouvez le faire soit en basculant vers le msdb base de données (par exemple avec USE msdb ), ou en qualifiant la procédure avec le nom et le schéma de la base de données (c'est-à-dire msdb.dbo.sp_help_jobschedule ).

Exemple

Voici un exemple pour montrer comment renvoyer tous les horaires attachés à une tâche spécifique :

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Résultat :

Cela renvoie une liste des horaires qui sont attachés au travail spécifié avec le @job_name arguments.

Alternativement, j'aurais pu passer le @job_id :

EXEC sp_help_jobschedule
	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Mais dans ce cas, je ne pourrais pas utiliser @job_name (c'est soit l'un soit l'autre).

Lorsque vous utilisez l'ID de tâche, vous pouvez omettre le nom du paramètre si vous le souhaitez :

EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Utilisation de @schedule_id Paramètre

Vous pouvez également obtenir un horaire basé sur son ID :

EXEC sp_help_jobschedule
	@schedule_id = 15;

Cela fonctionne bien tant que la planification n'est pas attachée à plusieurs tâches.

Voici ce qui se passe lorsqu'un planning est associé à plusieurs tâches :

EXEC sp_help_jobschedule
	@schedule_id = 14;

Résultat :

Msg 14369, Level 16, State 1, Procedure sp_help_jobschedule, Line 69 [Batch Start Line 22]
 The schedule ID "14" is used by more than one job. Specify the job_id.

Et même s'il demande de spécifier le job_id , si vous faites cela, vous devrez supprimer le schedule_id (comme mentionné, si vous passez un schedule_id , vous ne pouvez pas inclure le job_name ou job_id ).

Pour le démontrer, si j'ajoute simplement le job_id et conservez le schedule_id là, j'obtiens l'erreur suivante.

EXEC sp_help_jobschedule
	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
	@schedule_id = 14;

Résultat :

Msg 14273, Level 16, State 1, Procedure sp_help_jobschedule, Line 51 [Batch Start Line 22]
 You must provide either @job_id or @job_name (and, optionally, @schedule_name), or @schedule_id.

Inclure la description

Une autre chose que vous pouvez faire est de spécifier si vous souhaitez ou non inclure la description de l'horaire.

Par défaut, la description n'est pas incluse dans le jeu de résultats. En fait, le schedule_description la colonne est inclus, mais il ne contient pas la description, sauf si vous le demandez explicitement. Si vous ne le demandez pas, le schedule_description la colonne affiche (Description not requested.) .

Le @include_description le paramètre est bit , avec une valeur par défaut de 0 , ce qui signifie qu'il n'affiche pas la description. Passer une valeur de 1 entraîne l'affichage de la description.

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest',
	@include_description = 1;