Gestion des erreurs dans le flux de données
Lorsqu'un composant de flux de données applique une transformation à des données de colonne, extrait des données à partir de sources ou charge des données dans des destinations, des erreurs peuvent se produire. Les erreurs sont fréquemment dues à des valeurs de données inattendues. Par exemple, une conversion de données échoue car une colonne contient une chaîne au lieu d'un nombre, une insertion dans une colonne de base de données échoue car les données sont une date et que la colonne a un type de données numérique, ou l'évaluation d'une expression échoue car la valeur d'une colonne est nulle, ce qui engendre une opération mathématique non valide.
Les erreurs appartiennent en général à l'une des catégories suivantes :
Erreurs de conversion de données, qui se produisent si une conversion provoque la perte de chiffres significatifs, la perte de chiffres non significatifs et la troncation de chaînes. Les erreurs de conversion de données se produisent également si la conversion demandée n'est pas prise en charge.
Erreurs d'évaluation d'expression, qui se produisent si des expressions évaluées au moment de l'exécution effectuent des opérations non valides ou deviennent syntaxiquement incorrectes à cause de valeurs de données manquantes ou incorrectes.
Erreurs de recherche, qui se produisent si une opération de recherche ne trouve pas de correspondance dans la table de recherche.
De nombreux composants de flux de données prennent en charge les sorties d'erreur, qui vous permettent de contrôler la manière dont le composant gère les erreurs de lignes dans les données entrantes et sortantes. Vous pouvez spécifier le comportement du composant lorsqu'une troncation ou une erreur se produit en définissant des options sur des colonnes dans l'entrée ou la sortie. Par exemple, vous pouvez faire en sorte que le composant échoue si les données de noms des clients sont tronquées, mais qu'il ignore les erreurs sur une autre colonne qui contient des données moins importantes.
La sortie d'erreur peut être connectée à l'entrée d'une autre transformation ou chargée dans une destination différente de la sortie sans erreur. Par exemple, la sortie d'erreur peut être connectée à une transformation de colonne dérivée qui fournit une chaîne pour une colonne vide.
Le schéma suivant illustre un flux de données simple incluant une sortie d'erreur.
Outre les colonnes de données, la sortie d'erreur contient les colonnes ErrorCode et ErrorColumn. La colonne ErrorCode identifie l'erreur, tandis que la colonne ErrorColumn contient l'identificateur de lignage de la colonne d'erreur. Pour afficher les métadonnées de ces colonnes, cliquez sur le chemin d'accès qui connecte la sortie d'erreur au composant suivant dans le flux de données. Dans certaines circonstances, la colonne ErrorColumn prend la valeur zéro. Cela se produit lorsque la condition d'erreur affecte toute la ligne et non une seule colonne. Par exemple, lorsqu'une recherche échoue dans la transformation de recherche.
Pour plus d'informations, consultez Composants des flux de données et Chemins d'accès d'Integration Services.
Pour obtenir une liste d'erreurs, d'avertissements et d'autres messages Integration Services, consultez Guide de référence des erreurs et des événements SSIS.
Options d'erreur et de troncation
Les erreurs appartiennent à l'une des deux catégories suivantes : erreurs ou troncations. Une erreur indique un échec non équivoque et génère un résultat NULL. Il peut s'agir par exemple d'erreurs de conversion de données ou d'évaluation d'expression, telles qu'une tentative de conversion d'une chaîne contenant des caractères alphabétiques en nombre. Les conversions de données, les évaluations d'expression et les affectations de résultats d'expression aux variables, propriétés et colonnes de données peuvent échouer en raison de casts non conformes et de types de données incompatibles. Pour plus d'informations, consultez Cast (Expression SSIS) : conversion de types de données SSIS, Conversion implicite des types de données dans les expressions et Types de données d'Integration Services.
Une troncation est une erreur moins grave. Elle génère des résultats qui peuvent être utilisables, voire même souhaitables. Vous pouvez faire en sorte de traiter les troncations comme des erreurs ou comme des conditions acceptables. Par exemple, si vous insérez une chaîne de 15 caractères dans une colonne qui ne fait qu'un seul caractère de large, vous pouvez choisir de tronquer la chaîne.
Vous pouvez configurer la manière dont les sources, les transformations et les destinations gèrent les erreurs et les troncations. Le tableau ci-dessous décrit les options disponibles.
Option |
Description |
---|---|
Composant défaillant |
La tâche de flux de données échoue lorsqu'une erreur ou une troncation a lieu. L'échec est l'option par défaut pour une erreur et une troncation. |
Ignorer l'échec |
L'erreur ou la troncation est ignorée et la ligne de données est dirigée vers la sortie de la transformation ou de la source. |
Réacheminer la ligne |
La ligne de données d'erreur ou de troncation est dirigée vers la sortie d'erreur de la source, de la transformation ou de la destination. |
Ajout de la description de l'erreur
Par défaut, une sortie d'erreur fournit le code d'erreur numérique et contient généralement l'identificateur de la colonne dans laquelle l'erreur s'est produite. Vous pouvez utiliser le composant Script pour inclure la description de l'erreur dans une colonne supplémentaire en utilisant une ligne unique de script pour appeler la méthode GetErrorDescription de l'interface IDTSComponentMetaData100.
Le composant Script peut être ajouté au segment d'erreur du flux de données n'importe où en aval des composants de flux de données dont vous souhaitez capturer les erreurs, mais est généralement placé immédiatement avant l'écriture des lignes en erreur vers une destination. De cette manière, le script recherche uniquement les descriptions des lignes d'erreurs écrites. Par exemple, le segment d'erreur du flux de données peut corriger certaines erreurs sans écrire ces lignes dans une destination d'erreur. Pour plus d'informations, consultez Amélioration d'une sortie d'erreur à l'aide du composant Script.
Erreurs dans des opérations en bloc
Lorsqu'un package effectue une opération en bloc, telle que l'insertion de données, des erreurs dans les données peuvent se produire. Lorsque les erreurs se produisent, les données peuvent contenir aussi bien des lignes sans erreurs que des lignes avec des erreurs.
Pour gérer les lignes avec les erreurs séparément de celles sans erreurs, utilisez les transformations, telles que la transformation de fractionnement conditionnel et la transformation de composant de script, pour répartir les lignes vers différentes sorties. Pour plus d'informations sur ces composants, consultez Transformation de fractionnement conditionnel et Composant Script.
Pour configurer une sortie d'erreur
Voir aussi