Notifier l'opérateur si l'une des étapes du travail échoue
Puis-je (Comment puis-je configurer Sql Server 2008 pour notifier à l'exploitant si l'une des étapes dans le Travail échoue?
J'ai un travail Sql Server avec plusieurs étapes pour mettre à jour les données à partir de plusieurs sources différentes, suivie par une étape finale qui effectue plusieurs calculs sur les données. Tous les "actualisation des données" sont mis à "Aller à l'étape suivante en cas d'échec". De manière générale, si l'une des données actualise échoue, je veux toujours la dernière étape à courir, mais je veux toujours être informé sur les intermédiaires de pannes, de sorte s'ils ne parviennent pas toujours, je peux étudier.
source d'informationauteur Matt Murrell
Vous devez vous connecter pour publier un commentaire.
Ici est de savoir comment nous le faisons. Nous ajoutons un dernier T-SQL étape (généralement appelé "procédure de vérification") avec cette
Notez que ce code est à l'aide de les jetons dans les étapes de travail (le
$(...)
partie), donc le code ne peut pas être exécuté dans SSMS. C'bref essaie de trouver des entrées des étapes précédentes de l'emploi dans lessysjobhistory
et recherche de panne statuts.Dans Propriétés->Avancé vous pouvez également vérifier Inclure la sortie de l'étape dans l'histoire pour faire passer le message à partir de l'étape de l'échec. Laissez le Sur l'échec de l'action à Quitter l'emploi de signaler l'échec.
@wqw 's accepté réponse est excellente.
Je l'ai étendu pour ceux qui ont de la Messagerie de Base de données activé pour envoyer un email à un peu plus de détails sur ce qui s'est produit et comment. Intègre également icvader sa réponse sur cette page afin de prendre en compte de nouvelles tentatives.
Doit être vraiment très utile pour ceux d'entre nous qui ont besoin de plus de détails pour juger si une action urgente est nécessaire lorsque hors site/sur appel.
Une différence par rapport aux autres réponses sur laquelle il est basé: Ne pas soulever l'ensemble de la tâche comme une erreur.
C'est pour conserver la distinction dans l'histoire de job entre Avorté et Terminée avec des Erreurs.
Aller à des Propriétés de la Tâche > onglet "Notification" > action à effectuer lorsque le travail est terminé
en vertu de cet e-Mail case et sélectionnez "Lorsque le travail échoue" dans la liste déroulante et enregistrer le travail.
Lire 4ème point sur http://msdn.microsoft.com/en-us/library/ms191130.aspx
Si vous souhaitez avertir un opérateur par e-mail, vérifiez l'E-mail, sélectionnez un opérateur dans la liste, puis sélectionnez l'une des options suivantes:
Lorsque le travail réussit: pour informer l'opérateur lorsque le travail est terminé avec succès.
Lorsque le travail échoue: pour informer l'opérateur lorsque le travail est terminé sans succès.
Une fois le travail terminé: pour informer l'opérateur, indépendamment de l'état d'achèvement.
J'ai la plupart de mes étapes pour réessayer en raison d'une unique fonction translog scénario qui provoque le blocage occasionnel. wqw du poste alerte, même si une étape de ré-essayée avec succès. J'ai fait une adaptation qui ne seront pas d'alerte si une étape n'a pas, mais alors a été un succès sur réessayer.
Adamantish la réponse est la solution parfaite (Merci) : a fonctionné parfaitement.. modifications mineures. Comme wqw dit avant, ne fonctionnera pas dans SSMS, ajoutez cette dernière étape et exécuter le travail.
Une amélioration de la réponse ci-dessus, dans le cas où quelqu'un veut utiliser les opérateurs de l'agent sql server pour envoyer un e-mail et utiliser la base de données nom de profil stocké dans la base de données msdb:
à chaque étape, ajoutez le code: