← Tous les guides

Guide · Bases de données

Surveiller un job SQL Server Agent

Les notifications d'opérateur Agent vous préviennent quand une étape de job lève une erreur. Elles restent muettes si le service Agent est arrêté, si la machine ne redémarre jamais après un reboot, ou si le job est tout simplement sauté. Une étape de check-in comble ce trou : pas de ping, pas d'hypothèse que le job a tourné.

1. Créez un check

Créez un check dans Mortemain correspondant au planning du job et à une fenêtre de grâce adaptée, puis copiez son URL de ping.

 votre URL de ping
https://ping.mortemain.com/your-check-uuid

2. Ajoutez une étape de check-in au job

Ouvrez la page Steps du job et ajoutez une nouvelle étape après la dernière étape réelle. Réglez son type sur PowerShell et donnez-lui cette commande :

 Étape du job : Ping Success (PowerShell)
Invoke-RestMethod "https://ping.mortemain.com/your-check-uuid" -TimeoutSec 10

Aucun module à installer : Invoke-RestMethod est fourni avec le PowerShell qu'Agent utilise déjà pour le type d'étape « PowerShell ». Si vous préférez rester en étape Operating system (CmdExec), curl.exe est livré avec Windows Server 2019 et versions ultérieures :

 Étape du job : Ping Success (CmdExec)
curl.exe -fsS --max-time 10 "https://ping.mortemain.com/your-check-uuid" -o NUL

3. Alertez immédiatement en cas d'échec

Par défaut, quand une étape échoue, l'action en cas d'échec d'Agent est Quit the job reporting failure : votre étape de succès à la fin ne s'exécute donc jamais, et Mortemain ne le remarquerait qu'une fois toute la fenêtre de grâce expirée. Pour être alerté au moment même où le job casse, ajoutez une étape dédiée supplémentaire et redirigez chaque étape réelle vers elle.

Ajoutez une dernière étape, par exemple Ping Fail (PowerShell) :

 Étape du job : Ping Fail (PowerShell)
Invoke-RestMethod "https://ping.mortemain.com/your-check-uuid/fail" -TimeoutSec 10

Ensuite, sur la page Advanced de chaque étape réelle, remplacez On failure action par défaut par Go to step: Ping Fail. Le job finit toujours par signaler un échec une fois que Ping Fail s'arrête, mais pas avant que Mortemain en ait été informé.

Cela fonctionne de la même façon que le job ait été lancé par son planning, par une alerte, ou par un appel sp_start_job ponctuel : Agent exécute les étapes de manière identique dans tous les cas, aucun traitement particulier n'est nécessaire selon la façon dont le job a été déclenché.

4. Optionnel : suivre la durée du run

Ajoutez une première étape, Ping Start (PowerShell), avant tout travail réel, pour que Mortemain puisse chronométrer le run :

 Étape du job : Ping Start (PowerShell)
Invoke-RestMethod "https://ping.mortemain.com/your-check-uuid/start" -TimeoutSec 10

Avec un ping /start en place, Mortemain rapporte la durée réelle du run en plus du statut actif/en panne, utile pour repérer un job qui finit toujours, mais un peu plus lentement chaque semaine.

Testez

Clic droit sur le job puis Start Job at Step. Le check devrait passer actif quelques secondes après l'exécution de la dernière étape. Cassez ensuite temporairement une étape (renommez une table qu'elle interroge, par exemple) et relancez le job : l'alerte de panne devrait arriver immédiatement plutôt que d'attendre l'expiration de la fenêtre de grâce du planning, confirmant que Ping Fail est bien branché sur chaque étape.