Tâche de l'Agent SQL: Déterminer combien de temps il a été en cours d'exécution

Le Scénario

Il y a certains Travaux de l'Agent SQL qui sont planifiées pour s'exécuter toutes les quelques minutes pendant la journée.

Il est légitime de fois où il va rater son prochain calendrier parce que c'est toujours en cours d'exécution du programme précédent.

À chaque fois, un travail peut "bloquer". Ce n'est pas de produire un échec (parce que le travail n'a pas encore arrêté). Lorsque cela se produit, le travail peut être arrêtée manuellement et fonctionne très bien, la prochaine fois qu'il s'exécute. Il est conçu pour reprendre là où il l'avait laissé.

Quel est le moyen le plus efficace...?

Je voudrais un moyen de déterminer combien de temps (en secondes) d'une Tâche de l'Agent SQL nommé "JobX" est actuellement en cours d'exécution. Si elle n'est pas actuellement en cours d'exécution, il nous suffit de revenir à zéro.

De cette façon, je peux arrêter le travail si elle a été en cours d'exécution pour un montant de temps, au-delà d'un certain seuil.

Je suppose que la combinaison de xp_sqlagent_enum_jobs et sysjobhistory pourrait être utilisé, mais je suis curieux de savoir si il y a de meilleures solutions... et peut espérer bénéficier des obstacles que le reste d'entre vous avez déjà exécuté et a travaillé autour de.

Découvrez la suite de l'article. Nous avons eu un problème similaire, et l'implémentation de cette solution: SQL “chien de garde” de la boucle de début et de surveiller les Travaux de l'Agent SQL

OriginalL'auteur Kevin Fairchild | 2012-05-23