Un besoin qui peut se faire sentir de temps en temps dans l'agent SQL : « Éviter l'exécution de 2 jobs en même temps ». Lorsque que les planifications sont un peu rapprocher et qu'il y a un risque de ce genre entre 2 tâches totalement incompatibles, on pourra alors utiliser le script suivant :
SQL :
IF EXISTS( SELECT * FROM msdb.dbo.sysjobactivity WHERE stop_execution_date IS NULL AND job_id != $( ESCAPE_SQUOTE ( JOBID )))
RAISERROR ('Le job ne peut s''executer car d''autres sont actuellement en cours d''execution', 16, 1);
Créer tout d'abord une tâche s'exécutant en premier dans un travail dans l'agent. Au besoin définissez dans le second onglet que vous souhaitez réexécuter cette tâche lorsque qu'elle échoue et mettez l'intervalle d'essai à 30min ou 1h (indiquez le nombre d'essaie en conséquence).
Ici dès lors qu'un autre travail s'exécute au moment du démarrage de celui inclus le code ci-dessus, ce dernier se mettra en attente (boucle du nombre d'essais indiqués) qu'aucun travail ne s'exécute avant de passer à l'étape suivante.
La syntaxe ci-dessus ne fonctionne que pour un travail définie via
l'agent SQL. Testé sur SQL Server 2005… Peut être fonctionne t'il sous
2000 ?
{mos_fb_discuss:no_discuss}






















