Journalisation du collecteur de données

Le collecteur de données capture et enregistre différentes sortes d'informations pour chaque jeu d'éléments de collecte et ses packages de collecte. Ces informations, écrites dans les tables msdb, renseignent sur l'état actuel du jeu d'éléments de collecte et le résultat de l'exécution des packages. Ces tables de journal fournissent également des informations statistiques sur chaque jeu d'éléments de collecte et ses packages. Les types d'informations suivants sont disponibles pour surveiller et analyser la collecte de données :

  • les jeux d'éléments de collecte en cours d'exécution ;

  • l'historique de l'exécution d'un jeu d'éléments de collecte ;

  • pour un jeu d'éléments de collecte donné, la hiérarchie des packages exécutés dans le cadre de cette collection ;

  • pour chaque package, les heures de démarrage et d'arrêt, la durée, l'état d'achèvement et le nombre de lignes traitées ;

  • en cas d'échec d'exécution d'un jeu d'éléments de collecte, le package à l'origine de l'échec ;

  • en cas d'échec d'exécution d'un package, le composant défectueux dans ce package avec le message d'erreur ;

  • pour chaque package, la séquence des événements de journal que le package a enregistrés pour chaque exécution.

Rôle SSIS dans la journalisation du collecteur de données

Le collecteur de données implémente la journalisation à l'aide de procédures stockées et de fonctionnalités d'exécution et de journalisation de tâches SQL Server 2008 Integration Services (SSIS). Ces fonctionnalités créent des entrées de journal résumées et détaillées pour les modules fournisseurs d'informations lorsque des événements d'exécution se produisent. Pour plus d'informations, consultez Implémentation de la journalisation dans les packages.

Les événements enregistrés fournissent des points de référence pour toutes les phases d'exécution d'un programme. Chaque enregistrement d'événement est mappé à l'ID d'exécution du package sous lequel une tâche s'est exécutée. Le collecteur de données mappe ces ID aux packages spécifiques pour la collecte et le téléchargement de données.

Journalisation de jeu d'éléments de collecte et de package

L'architecture globale et le traitement des données utilisés pour la journalisation du collecteur de données sont les suivants :

  • Les informations sur les jeux d'éléments de collecte, fournies par le collecteur de données au moment de l'exécution, sont stockées dans une table de collecteur de données à l'aide d'une procédure stockée. Chaque enregistrement se voit affecter un log_id (ID de journal) qui permet de référencer les entrées de table et de mapper un package à l'ID d'exécution SSIS.

  • Les informations sur les packages sont enregistrées au début et à la fin de l'exécution de chaque package. Cette journalisation s'effectue en exécutant une tâche Transact-SQL au début et à la fin du flux de contrôle pour chaque package.

    • Pendant l'exécution du package, le collecteur de données effectue des mises à jour périodiques et statistiques. Pour chaque package, une tâche de gestionnaire d'erreurs globales (implémentée à l'aide d'événements de package SSIS) enregistre les événements d'erreur. Cette opération s'effectue en plaçant la tâche d'exécution de requêtes SQL SSIS dans le flux de contrôle pour assurer la journalisation requise des événements. Pour plus d'informations, consultez Tâche d'exécution SQL SSIS et Éléments de flux de contrôle.

    • Les événements générés par SSIS sont enregistrés dans la table définie par SSIS, dbo.sysssislog, à l'aide de la procédure stockée dbo.sp_ssis_addlogentry.

  • Lorsque le package se termine, un événement de réussite ou d'échec est enregistré.

  • Lorsque le jeu d'éléments de collecte s'arrête, ces informations sont enregistrées. Comme pour un package, un événement de réussite ou d'échec est enregistré.

Les données générées par le collecteur de données sont stockées dans la table dbo.syscollector_execution_log_internal, jointe à dbo.sysssislog. Une vue complète de l'exécution de jeu d'éléments de collecte est ainsi obtenue. Ces tables sont décrites de manière plus détaillée dans la section suivante.

Tables de journal

Les tables de journal et leurs colonnes sont répertoriées dans le tableau suivant. La section « Accès et affichage des données de journal », plus loin dans cette rubrique, décrit les fonctions et les vues qui vous permettent d'obtenir des informations détaillées sur les types et le contenu des données d'une table de journal.

Nom de la table

Description

syscollector_execution_log_internal

Table du collecteur de données utilisée pour stocker les informations d'exécution. Elle comporte les colonnes suivantes :

  • log_id

  • parent_log_id

  • collection_set_id

  • collection_item_id

  • start_time

  • last_iteration_time

  • finish_time

  • runtime_execution_mode

  • status

  • operator

  • package_id

  • package_execution_id

  • failure_message

syscollector_execution_stats_internal

Table du collecteur de données permettant de stocker des informations statistiques. Elle comporte les colonnes suivantes :

  • log_id

  • task_name

  • execution_row_count_in

  • execution_row_count_out

  • execution_row_count_errors

  • execution_time_ms

  • log_time

sysssislog

Table définie par SSIS dédiée aux informations d'événements, telles que le démarrage d'un jeu d'éléments de collecte ou d'un package, ainsi que les avertissements ou les erreurs. Pour plus d'informations, consultez sysssislog (Transact-SQL).

Important

Ne modifiez pas les données dans les tables de journal. Les données de ces tables doivent être insérées, mises à jour et supprimées de manière spécifique par le biais de procédures stockées. Les noms et les définitions des tables peuvent changer au moment de l'exécution, sont modifiés lorsque vous mettez à jour l'application et pourront différer dans des versions futures. Au lieu d'utiliser directement les tables, recourez aux procédures stockées et aux vues documentées fournies avec le collecteur de données pour accéder aux données d'instance et d'application.

Rétention de journal

Un journal de jeu d'éléments de collecte est conservé aussi longtemps que les données d'un jeu d'éléments de collecte dans l'entrepôt de données de gestion. Cette durée est définie par la période de rétention que vous pouvez configurer pour chaque jeu d'éléments de collecte. Lorsque la période de rétention expire, un travail de l'Agent SQL Server vide les données du journal.

Niveaux de journalisation

Trois niveaux de journalisation sont fournis pour gérer les différents scénarios de collecte qui peuvent se présenter. Vous disposez ainsi des données requises pour dépanner un jeu d'éléments de collecte ou un package en cas de besoin. Vous pouvez définir différents niveaux de journalisation pour chaque jeu d'éléments de collecte en fonction de vos besoins.

Le tableau suivant décrit les options de journalisation disponibles.

Niveau

Description

0

Niveau de journalisation par défaut. Enregistre les informations d'exécution et les événements SSIS suivants :

  • Démarrage ou arrêt d'un jeu d'éléments de collecte

  • Démarrage ou arrêt d'un package

  • Informations sur l'erreur

1

Combine la journalisation du niveau 0 et les événements suivants :

  • Statistiques d'exécution

  • Progression de la collecte continuellement en cours d'exécution

  • Événements d'avertissements de SSIS

2

Combine la journalisation du niveau 1 et les événements SSIS détaillés.

Par défaut, le niveau de journalisation est 0. Le niveau 0 est utilisé pour éviter des messages de journal excessifs, tels que les événements d'avertissements générés par la journalisation du niveau 1. Ces événements d'avertissements peuvent inclure des suggestions de SSIS relatives aux performances, que l'utilisateur ne peut pas corriger.

Le niveau 2 fournit des informations d'événements supplémentaires qui peuvent servir pour le dépannage avancé.

Événements SSIS

Chaque package du collecteur des données utilise le fournisseur d'événements SQL Server. Les événements décrits dans le tableau suivant sont enregistrés dans le journal et peuvent être consultés.

Nom de l'événement

Niveau de journalisation

Description

PackageBegin

0

Événement standard généré dans tous les cas. Cet événement ne peut pas être désactivé.

PackageEnd

0

Événement standard généré dans tous les cas. Cet événement ne peut pas être désactivé.

OnError

0

Événement d'erreur.

OnWarning

1

Événement d'avertissement.

PipelineBufferLeak

2

Fournit des informations sur tout composant qui maintient l'activité des tampons après l'arrêt du gestionnaire de tampons. Si un tampon est toujours actif, cela signifie que des ressources de tampon n'ont pas été libérées et qu'elles peuvent provoquer des fuites de mémoire. Cette entrée du journal fournit le nom du composant et l'ID du tampon.

PipelineExecutionPlan

2

Indique le plan d'exécution du flux de données. Le plan d'exécution fournit des informations sur la manière dont les tampons sont envoyés aux composants. Ces informations, conjuguées à l'entrée PipelineExecutionTrees du journal, décrivent ce qui se passe dans une tâche de flux de données.

PipelineExecutionTrees

2

Indique les arborescences d'exécution de la disposition du flux de données. Le planificateur du moteur de flux de données utilise les arborescences pour construire le plan d'exécution du flux de données.

PipelineInitialization

2

Donne des informations d'initialisation relatives à la tâche. Ces informations incluent les répertoires à utiliser pour le stockage temporaire des données BLOB, la taille du tampon par défaut ainsi que le nombre de lignes contenues dans un tampon. Selon la configuration de la tâche de flux de données, plusieurs entrées de journal peuvent être écrites.

ExecuteSQLExecutingQuery

2

Fournit des informations sur les phases d'exécution de l'instruction SQL. Des entrées de journal sont écrites lorsque la tâche se connecte à la base de données, lorsqu'elle commence à préparer l'instruction SQL et au terme de l'exécution de l'instruction SQL. L'entrée de journal concernant la phase de préparation inclut l'instruction SQL que la tâche utilise.

FileSystemOperation

2

Indique l'opération que la tâche effectue. L'entrée de journal est écrite au démarrage de l'opération du système de fichiers et elle inclut des informations sur la source et la destination.

ExecuteProcessExecutingProcess

2

Fournit des informations sur le processus que la tâche est chargée d'exécuter.

Deux entrées de journal sont écrites. La première contient des informations sur le nom et l'emplacement de l'exécutable que la tâche exécute ; la deuxième enregistre la sortie de l'exécutable.

Accès et affichage des données de journal

Vous pouvez accéder aux données et les afficher par programme en utilisant les fonctions et les vues fournies. Vous pouvez également utiliser la Visionneuse du fichier journal dans l'Explorateur d'objets Management Studio pour consulter les journaux. Pour plus d'informations, consultez Procédure : afficher les journaux des jeux d'éléments de collecte.

Le tableau ci-dessous décrit les fonctions et les vues qui permettent d'accéder aux données de journal.

Nom

Description

fn_syscollector_get_execution_details (Transact-SQL)

Retourne des informations détaillées sur les journaux de jeu d'éléments de collecte et de package pour le log_id (ID de journal) demandé et toutes ses entrées de journal dépendantes.

fn_syscollector_get_execution_stats (Transact-SQL)

Retourne un jeu de statistiques pour le log_id demandé. Les statistiques sont calculées à partir des entrées de la vue syscollector_execution_stats.

syscollector_execution_log (Transact-SQL)

Fournit une vue de la table syscollector_execution_log_internal.

syscollector_execution_log_full (Transact-SQL)

Fournit une vue détaillée de la table syscollector_execution_log_internal et affiche les entrées de journal dans une hiérarchie qui part de l'entrée de journal de collection de niveau supérieur et parcourt tous les packages exécutés dans le cadre de l'exécution d'un jeu d'éléments de collecte.

syscollector_execution_stats (Transact-SQL)

Fournit une vue 1:1 de la table syscollector_execution_stats_internal.