Souvent, le moyen le plus rapide d'obtenir une liste des travaux de l'Agent SQL Server consiste simplement à développer le nœud de l'Agent SQL Server dans l'Explorateur d'objets SSMS.
Mais ce n'est pas le seul moyen. Et selon votre environnement, ce n'est peut-être même pas une option. Si vous ne disposez pas de SSMS ou d'un outil de base de données qui vous permet de voir les travaux de l'Agent SQL Server, vous devrez peut-être utiliser T-SQL à la place.
Dans cet article, je présente trois options pour renvoyer une liste des travaux de l'Agent SQL Server lors de l'utilisation de T-SQL.
Les options
Vous pouvez utiliser les options suivantes pour renvoyer une liste des travaux de l'Agent SQL Server avec T-SQL :
- Option 1 :Exécute le
sp_help_job
procédure stockée. - Option 2 :Interroger la
sysjobs_view
vue. - Option 3 :Interroger les
sysjobs
tableau directement.
Toutes ces options résident dans le msdb base de données, et doivent donc être exécutés dans cette base de données. Vous pouvez le faire en basculant vers le msdb base de données d'abord, ou en qualifiant l'objet de manière appropriée (par exemple, msdb.dbo.sysjobs_view
).
Option 1 :sp_help_job
Lors de l'utilisation de sp_help_job
pour renvoyer une liste des travaux de l'Agent SQL Server, exécutez-le simplement sans aucun argument.
Comme ceci :
USE msdb;
EXEC sp_help_job;
Dans ce cas, je suis passé au msdb base de données en premier, ce qui signifiait que je n'avais pas besoin de qualifier complètement la procédure avec le nom et le schéma de la base de données.
Voici à quoi cela ressemble lorsque j'utilise SSMS pour l'exécuter dans mon environnement de test :
Renvoyer une tâche spécifique
Vous pouvez utiliser la même procédure stockée pour renvoyer les détails de l'une de ces tâches. Lorsque vous faites cela, vous obtenez beaucoup plus de détails que lorsque vous répertoriez tous les emplois.
Pour obtenir les détails de la tâche, vous devez fournir le nom ou l'ID de la tâche.
Voici un exemple :
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Résultat :
Cela répertorie la tâche, ainsi que toutes les étapes de la tâche, les planifications et les serveurs cibles.
Voici un exemple de code lors de l'utilisation de l'ID :
EXEC sp_help_job
@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';
Lorsque vous utilisez l'ID, vous pouvez omettre le nom du paramètre si vous le souhaitez.
Exemple :
EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';
Syntaxe
La syntaxe complète de sp_help_job
va comme ceci :
sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
Voir la documentation de Microsoft pour sp_help_job
pour une explication de chaque paramètre, ainsi que les valeurs que chacun accepte.
Option 2 :La sysjobs_view
Afficher
Vous pouvez utiliser le sysjobs_view
pour renvoyer une liste des travaux de l'Agent SQL Server.
Exemple :
SELECT * FROM msdb.dbo.sysjobs_view;
Dans ce cas, j'ai qualifié le nom de la vue avec la base de données et le schéma.
Cette vue renvoie un jeu de résultats similaire (mais légèrement différent) au sp_help_job
procédure stockée lorsqu'elle est utilisée sans aucun argument.
Si vous voulez des détails sur le travail tels que les étapes, les horaires, etc., vous devrez le joindre à d'autres tables, telles que sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, etc.
Voici un exemple de jointure avec les sysjobsteps
tableau :
SELECT
jv.name,
jv.description,
jv.start_step_id,
js.step_id,
js.step_name
FROM msdb.dbo.sysjobs_view jv
LEFT JOIN msdb.dbo.sysjobsteps js
ON jv.job_id = js.job_id;
Voici le résultat dans mon environnement de test :
Comme il s'agit d'une jointure à gauche, elle inclut les travaux qui n'ont pas d'étapes (voir le NULL
dans le step_id
et step_name
colonnes pour le travail appelé TestJob
).
Pour le limiter uniquement aux tâches comportant des étapes, utilisez une jointure interne.
Option 3 :Les sysjobs
Tableau
Voici un exemple d'accès direct aux sysjobs
tableau :
SELECT * FROM msdb.dbo.sysjobs;
Comme pour la vue, si vous voulez des détails sur le travail tels que les étapes, les horaires, etc., vous devrez le joindre à d'autres tables, telles que sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, etc.
Il est généralement recommandé d'interroger la vue plutôt que la table directement.