Implémentation de la journalisation dans les packages

Integration Services comporte des fonctionnalités de journalisation qui écrivent des entrées de journal lorsque des événements d'exécution surviennent et peuvent également écrire des messages personnalisés.

Integration Services prend en charge un ensemble diversifié de modules fournisseurs d'informations et vous permet de créer des modules personnalisés. Les modules fournisseurs d'informations Integration Services peuvent écrire des entrées de journal dans des fichiers texte, dans le Générateur de profils SQL Server, dans SQL Server, dans le journal des événements Windows et dans les fichiers XML.

Les journaux sont associés aux packages et configurés au niveau du package. Chaque tâche ou conteneur dans un package peut journaliser des informations dans n'importe quel journal de package. Les tâches et conteneurs d'un package peuvent être activés pour la journalisation même si le package lui-même ne l'est pas. Par exemple, vous pouvez activer la journalisation sur une tâche d'exécution SQL sans activer la journalisation sur le package parent. Un package, un conteneur ou une tâche peuvent écrire dans plusieurs journaux. Vous pouvez activer la journalisation sur le package uniquement, ou choisir d'activer la journalisation sur une tâche ou un conteneur individuel contenu dans le package.

Pour personnaliser la journalisation d'un événement ou d'un message personnalisé, Integration Services fournit un schéma d'informations fréquemment journalisées à inclure dans les entrées de journal. Le schéma de journal Integration Services définit les informations que vous pouvez journaliser. Vous pouvez sélectionner les éléments à partir du schéma de journal pour chaque entrée de journal.

Un package et ses conteneurs et tâches ne doivent pas journaliser la même information, et les tâches au sein du même package ou conteneur peuvent journaliser des informations différentes. Par exemple, un package peut journaliser des informations d'opérateur lorsque le package démarre, une tâche peut journaliser la source de l'échec de la tâche et une autre tâche peut journaliser les informations lorsque des erreurs surviennent. Si un package et ses conteneurs et tâches utilisent plusieurs journaux, les mêmes informations sont écrites dans tous les journaux.

Vous pouvez sélectionner un niveau de journalisation adapté à vos besoins en spécifiant les événements à journaliser et les informations à journaliser pour chaque événement. Vous pouvez estimer que certains événements fournissent des informations plus utiles que d'autres. Par exemple, vous pouvez ne journaliser que les noms d'ordinateur et d'opérateur pour l'événement PreExecute tout en journalisant toutes les informations disponibles pour l'événement Error.

Pour empêcher les fichiers journaux d'occuper de grands volumes sur l'espace disque ou pour éviter une journalisation excessive qui pourrait nuire aux performances, vous pouvez limiter la journalisation en sélectionnant des informations et événements spécifiques à journaliser. Par exemple, vous pouvez configurer un journal pour qu'il ne capture que la date et le nom de l'ordinateur pour chaque erreur.

Dans le concepteur SSIS, vous pouvez définir les options de journalisation en utilisant la boîte de dialogue Configurer les journaux SSIS.

Schéma de journal

Le tableau suivant décrit les éléments du schéma de journal.

Élément

Description

Ordinateur

Le nom de l'ordinateur sur lequel l'événement du journal est survenu.

Opérateur

L'identité de l'utilisateur ayant lancé le package.

SourceName

Le nom du conteneur ou de la tâche dans laquelle l'événement du journal est survenu.

SourceID

L'identificateur unique du package ; la boucle Foreach, la boucle For ou le conteneur de séquences ; ou la tâche dans laquelle l'événement du journal est survenu.

ExecutionID

L'identificateur global unique (GUID) de l'instance d'exécution du package.

RemarqueRemarque
L'exécution d'un package unique peut créer des entrées de journal avec des valeurs différentes pour l'élément ExecutionID. Par exemple, lorsque vous exécutez un package dans BI Development Studio, la phase de validation peut créer des entrées de journal avec un élément ExecutionID correspondant à BI Development Studio. Toutefois, la phase d'exécution peut créer des entrées de journal avec un élément ExecutionID correspondant à dtshost.exe. Autre exemple : lorsque vous exécutez un package qui contient des tâches d'exécution de package, chacune de ces tâches exécute un package enfant. Ces packages enfants peuvent créer des entrées de journal comportant un élément ExecutionID différent de celui des entrées de journal créées par le package parent.

MessageText

Un message associé à l'entrée de journal.

DataBytes

Un tableau d'octets spécifique à l'entrée du journal. La signification de ce champ varie en fonction de l'entrée du journal.

Le tableau suivant décrit trois éléments supplémentaires du schéma de journal qui ne sont pas disponibles sous l'onglet Détails de la boîte de dialogue Configurer les journaux SSIS.

Élément

Description

StartTime

Heure à laquelle le conteneur ou la tâche commence à s'exécuter.

EndTime

Heure à laquelle le conteneur ou la tâche arrête de s'exécuter.

DataCode

Valeur entière facultative qui contient généralement une valeur de l'énumération DTSExecResult qui indique le résultat de l'exécution du conteneur ou de la tâche :

  • 0 - Succès

  • 1 - Échec

  • 2 - Terminée

  • 3 - Annulée

Entrées du journal

Integration Services prend en charge les entrées de journal sur des événements prédéfinis et fournit des entrées de journal personnalisées pour de nombreux objets Integration Services. La boîte de dialogue Configurer les journaux SSIS du concepteur SSIS répertorie ces événements et ces entrées de journal personnalisées.

Le tableau suivant décrit les événements prédéfinis qui peuvent être activés pour écrire des entrées de journal lorsque des événements générés à l'exécution surviennent. Ces entrées de journal s'appliquent aux exécutables, au package et aux conteneurs et tâches inclus dans le package. Le nom de l'entrée de journal est le même que l'événement généré à l'exécution et qui a provoqué l'écriture de l'entrée de journal.

Événements

Description

OnError

Écrit une entrée de journal lorsqu'une erreur se produit.

OnExecStatusChanged

Écrit une entrée de journal lorsque l'état de l'exécution de l'exécutable change.

OnInformation

Écrit une entrée de journal pendant la validation et l'exécution d'un exécutable pour rapporter des informations.

OnPostExecute

Écrit une entrée de journal immédiatement après la fin de l'exécution de l'exécutable.

OnPostValidate

Écrit une entrée de journal lorsque la validation de l'exécutable est terminée.

OnPreExecute

Écrit une entrée de journal immédiatement avant le début de l'exécution de l'exécutable.

OnPreValidate

Écrit une entrée de journal lorsque la validation de l'exécutable débute.

OnProgress

Écrit une entrée de journal lorsqu'une progression quantifiable a été réalisée par l'exécutable.

OnQueryCancel

Écrit une entrée de journal pour chaque point de jonction dans le traitement de la tâche où il est possible d'annuler l'exécution.

OnTaskFailed

Écrit une entrée de journal lorsqu'une tâche échoue.

OnVariableValueChanged

Écrit une entrée de journal lorsque la valeur d'une variable est modifiée.

OnWarning

Écrit une entrée de journal lorsqu'un avertissement survient.

PipelineComponentTime

Pour chaque composant de flux de données, écrit une entrée de journal pour chaque phase de validation et d'exécution. L'entrée de journal spécifie le temps de traitement de chaque phase.

Diagnostic

Écrit une entrée de journal qui fournit des informations de diagnostic.

Par exemple, vous pouvez enregistrer un message avant et après chaque appel à un fournisseur de données externes. Pour plus d'informations, consultez Dépannage de l'exécution des packages.

Le package ainsi que de nombreuses tâches contiennent des entrées du journal personnalisées qui peuvent être activées pour la journalisation. Par exemple, la tâche d'envoi de courrier fournit l'entrée de journal personnalisée SendMailTaskBegin, qui journalise les informations lorsque l'exécution de la tâche démarre, mais avant d'envoyer un message électronique. Pour plus d'informations, consultez Messages personnalisés pour la journalisation.

Différentiation entre des copies de packages

Les données de journalisation incluent le nom et le GUID du package auxquels les entrées de journal appartiennent. Si vous créez un package par copie d'un package existant, le nom et le GUID du package existant sont également copiés. Il est donc possible que deux packages aient le même nom et le même GUID, ce qui les rend difficiles à distinguer dans les données du journal.

Pour lever l'ambiguïté, vous devez mettre à jour le nom et le GUID des nouveaux packages. Dans Business Intelligence Development Studio, vous pouvez régénérer le GUID dans la propriété ID et mettre à jour la valeur de la propriété Name dans la fenêtre Propriétés. Vous pouvez également modifier le GUID et le nom par programme ou en utilisant l'invite de commandes dtutil . Pour plus d'informations, consultez Définition des propriétés d'un package et Utilitaire dtutil.

Options de journalisation des parents

Souvent, les options de journalisation des tâches et conteneurs de séquences et de boucles For ou Foreach correspondent à celle du package ou du conteneur parent. Dans ce cas, vous pouvez configurer ces éléments pour qu'ils héritent des options de journalisation de leur conteneur parent. Par exemple, dans un conteneur de boucles For qui contient une tâche d'exécution SQL, cette tâche peut utiliser les options de journalisation définies pour le conteneur de boucles For. Pour utiliser les options de journalisation des parents, définissez la propriété LoggingMode du conteneur avec la valeur UseParentSetting. Vous pouvez définir cette propriété dans la fenêtre Propriétés de Business Intelligence Development Studio ou via la boîte de dialogue Configurer les journaux SSIS dans le concepteur SSIS.

Modèles de journalisation

Dans la boîte de dialogue Configurer les journaux SSIS, vous pouvez également créer et enregistrer comme modèles les configurations de journalisation fréquemment utilisées, puis utiliser ces modèles dans différents packages. Cette procédure facilite l'application d'une stratégie de journalisation cohérente à différents packages et la modification des paramètres de journaux par la mise à jour et l'application des modèles. Les modèles sont stockés sous forme de fichiers XML.

Pour configurer la journalisation à l'aide de la boîte de dialogue Configurer les journaux SSIS

  1. Activez le package et ses tâches pour la journalisation. La journalisation peut s'effectuer au niveau du package, du conteneur et de la tâche. Vous pouvez spécifier différents journaux pour les packages, conteneurs et tâches.

  2. Sélectionnez un module fournisseur d'informations et ajoutez un journal pour le package. Les journaux ne peuvent être créés qu'au niveau du package, et une tâche ou un conteneur doit utiliser un des journaux créés pour le package. Chaque journal est associé à l'un des modules fournisseurs d'informations suivants : fichier texte, SQL Server Profiler, SQL Server, journal des événements Windows ou fichier XML. Pour plus d'informations, consultez Procédure : activer la journalisation dans un package.

  3. Sélectionnez les événements et les informations de schéma de journal pour chaque événement que vous voulez capturer dans le journal. Pour plus d'informations, consultez Procédure : configurer la journalisation à l'aide d'un fichier de configuration enregistré.

Pour afficher des entrées de journal pendant le développement d'un package

Ressources externes

Icône Integration Services (petite) Rester à jour avec Integration Services

Pour obtenir les derniers téléchargements, articles, exemples et vidéos de Microsoft, ainsi que des solutions sélectionnées par la communauté, visitez la page Integration Services sur MSDN ou TechNet :

Pour recevoir une notification automatique de ces mises à jour, abonnez-vous aux flux RSS disponibles sur la page.