La gestion des logs avec SSIS
Pouvoir être en mesure de suivre la bonne exécution des traitements batch SSIS est primordiale.
Plusieurs solutions permettent de répondre à ce besoin de suivi :
- La méthode manuelle : Management Studio propose un historique d’exécution des jobs
- L’utilisation de tâches SQL permettant de renseigner une table de log
- L’utilisation des logs standards SSIS
La solution 2. est très souvent rencontrée sur les projets par simple méconnaissance de la 3.
Cet article décrit donc comment mettre en place en quelques minutes un suivi des traitements SSIS performant.
L’activation des logs s’effectue pour chaque package dans le menu SSIS\Enregistrement (Logging en version anglaise)
Les étapes à réaliser sont les suivantes :
- Choisir dans la liste déroulante type de fournisseur, où seront stockés les logs (base de données, fichier XML,…) puis cliquer sur le bouton Ajouter. Personnellement, je préconise le stockage SQL Server qui permet une exploitation aisée de ces données
- Cocher la case à cocher devant le nom du package
- Activer la case à cocher devant le fournisseur SQL Server
- Sélectionner la base de données hébergeant la table de log
Remarque : Il n’est pas possible de choisir le nom de la table dans laquelle les logs seront stockés. SSIS 2005 les stocke dans la table sysdtslog90, SSIS 2008 dans sysssislog.
L’onglet Détails permet ensuite de spécifier le niveau de finesse dans le suivi des traitements :
Afin d’éviter des logs trop volumineux, je recommande de tracer uniquement les événements suivants :
- OnPreExecute : Trace le début d’exécution des différentes tâches présentes dans le niveau Flux de Contrôle
- OnPostExecute : Trace la fin d’exécution des différentes tâches présentes dans le niveau Flux de Contrôle
- OnError : Trace toutes les erreurs survenues aux niveaux Flux de contrôle et Flux de données
Les principaux champs de la table de logs sont les suivants :
- Event : événement qui a généré le log (OnPreExecute, OnPostExecute ou OnError)
- Computer : ordinateur qui l’a exécuté
- Operator : utilisateur qui l’a exécuté (permet par exemple de différencier une exécution automatique effectuée par l’agent SQL Server d’une exécution manuelle de rattrapage)
- Source : étape du flux qui a généré le log
- SourceId : Identifiant de l’élément (package, tâche de contrôle…) ayant généré le log
- executionId : identifiant unique de l’exécution
- Starttime : début de l’événement qui a généré le log
- Endtime : fin de l’événement qui a généré le log
- Message : détails de l’événement (notamment les messages d’erreurs sur l’événement OnError)
- En quelques clics nous avons ainsi paramétré le stockage de l’information relative à l’exécution des flux SSIS. Ces données peuvent maintenant être requêtées en SQL ou utilisées via du reporting.
A noter qu’une ligne est écrite dans la table de log pour chaque événement: début d’une tâche, fin d’une tâche ou erreur. Les données doivent donc être manipulées pour obtenir une ligne du type: nom de la tâche, date de début, date de fin et statut d’exécution.
- Homsys propose ainsi un ensemble de tableaux de suivi développés sous Reporting Services. Cet aspect sera présenté dans un prochain article…
Je suis tombé dernièrement sur l’outil suivant qui a l’air de proposer une gestion des logs ainsi qu’un suivi d’exploitation assez sympa, quelqu’un l’aurait-il testé?
http://www.codeplex.com/DTLoggedExec