Configuration d'erreur pour le traitement des cubes, des partitions et des dimensions (SSAS - Multidimensionnel)
Les propriétés de configuration d'erreur sur les objets cube, partition ou de dimension déterminent le mode de réponse du serveur lorsqu'une erreur d'intégrité des données se produit pendant le traitement. Les clés dupliquées, manquantes et les valeurs NULL dans une colonne clé déclenchent généralement ces erreurs, et comme l'enregistrement à l'origine de l'erreur n'est pas ajouté à la base de données, vous pouvez définir des propriétés qui déterminent ce qui se produit après. Par défaut, le traitement s'arrête. Cependant, lorsque vous développez le cube, vous pouvez souhaiter que le traitement continue lorsque des erreurs se produisent afin de tester le comportement du cube avec des données importées, même si elles sont incomplètes.
Cette rubrique contient les sections suivantes :
Dupliquer des clés résultant de relations incohérentes (KeyDuplicate)
Modifier la limite d’erreurs ou l’action de limite d’erreurs
Ordre d’exécution
Le serveur exécute toujours les règles NullProcessing
avant les règles ErrorConfiguration
pour chaque enregistrement. Il est important de comprendre cela, car les propriétés de traitement Null qui convertissent les valeurs Null en zéros peuvent introduire des erreurs de clé dupliquée lorsque plusieurs enregistrements d'erreur contiennent un zéro dans une colonne clé.
Comportements par défaut
Par défaut, le traitement s'arrête à la première erreur impliquant une colonne clé. Ce comportement est contrôlé par un nombre maximal d'erreurs qui spécifie zéro comme nombre d'erreurs autorisées et la directive Arrêter le traitement qui indique au serveur d'arrêter le traitement lorsque le nombre d'erreurs est atteint.
Les enregistrements qui déclenchent une erreur, en raison de valeurs NULL, manquantes ou dupliquées, sont convertis en membre inconnu ou ignorés. Analysis Services n’importera pas de données qui enfreignent les contraintes d’intégrité des données.
La conversion en membre inconnu se produit par défaut, en raison du paramètre
ConvertToUnknown
deKeyErrorAction
. Les enregistrements alloués à un membre inconnu sont mis en quarantaine dans la base de données en tant que preuve d'un problème que vous pouvez examiner une fois le traitement terminé.Les membres inconnus sont exclus des charges de travail de requête, mais ils seront visibles dans certaines applications clientes si est
UnknownMember
défini sur Visible.Pour effectuer le suivi du nombre de valeurs NULL converties en membre inconnu, modifiez la propriété
NullKeyConvertedToUnknown
de façon à consigner ces erreurs dans le journal ou dans la fenêtre de traitement.Ce nombre est ignoré lorsque vous affectez manuellement la valeur
KeyErrorAction
à la propriétéDiscardRecord
.
Les propriétés de configuration d'erreur permettent de déterminer le mode de réponse du serveur lorsqu'une erreur se produit. Les options sont l'arrêt immédiat du traitement, la poursuite du traitement mais l'arrêt de la journalisation ou la poursuite du traitement et de la journalisation des erreurs. Les valeurs par défaut varient en fonction de la gravité de l'erreur.
Le nombre d'erreurs assure le suivi du nombre d'erreurs qui se produisent. Lorsque vous définissez une limite supérieure, la réponse du serveur change lorsque cette limite est atteinte. Par défaut, le serveur arrête le traitement une fois la limite atteinte. Le nombre maximal par défaut est 0, ce qui entraîne l'arrêt du traitement lors de la première erreur.
Les erreurs ayant un impact élevé, notamment une clé manquante ou une valeur NULL dans un champ clé, doivent être traitées rapidement. Par défaut, ces erreurs adhèrent aux comportements de serveur ReportAndContinue
, où le serveur intercepte l'erreur, l'ajoute au nombre d'erreurs, puis continue le traitement (sauf si le nombre maximal d'erreurs est zéro, et le traitement s'arrête immédiatement).
D'autres erreurs sont générées, mais pas comptabilisées ou consignées par défaut (paramètre IgnoreError
), car l'erreur ne pose pas nécessairement un problème d'intégrité des données.
Le nombre d'erreurs est attribué par les paramètres de traitement des valeurs NULL. Pour les attributs de dimension, les options de traitement des valeurs NULL déterminent le mode de réponse du serveur lorsqu'aucune valeur NULL n'est rencontrée. Par défaut, les valeurs NULL dans une colonne numérique sont converties en zéros, tandis que les valeurs NULL dans une colonne de chaîne sont traitées en tant que chaînes vides. Remplacez les propriétés NullProcessing
de façon à intercepter les valeurs NULL avant qu'elles ne soient converties en erreurs KeyNotFound
ou KeyDuplicate
. Pour plus d’informations, consultez Clés NULL dans une dimension .
Les erreurs sont consignées dans la boîte de dialogue Traiter, mais ne sont pas enregistrées. Vous pouvez spécifier un nom de fichier journal d'erreurs de clé pour collecter les erreurs dans un fichier texte.
Propriétés de configuration d'erreur
Il existe neuf propriétés de configuration d'erreur. Cinq sont utilisées pour déterminer la réponse du serveur lorsqu'une erreur spécifique se produit. Les quatre autres concernent les charges de travail de configuration d'erreur, telles que le nombre d'erreurs à autoriser, l'action à entreprendre lorsque le nombre maximal d'erreurs est atteint et s'il faut collecter les erreurs dans un fichier journal.
Réponse du serveur à des erreurs spécifiques
Propriété | Default | Autres valeurs |
---|---|---|
CalculationError Se produit lors de l'initialisation de la configuration d'erreur. |
IgnoreError ne consigne pas ou ne comptabilise pas l'erreur ; le traitement continue tant que le nombre d'erreurs est inférieur au nombre maximal. |
ReportAndContinue consigne et comptabilise l'erreur.ReportAndStop signale l'erreur et arrête le traitement immédiatement, indépendamment du nombre maximal d'erreurs. |
KeyNotFound Se produit lorsqu'une clé étrangère dans une table de faits n'a pas de clé primaire correspondante dans une table de dimension associée (par exemple, une table de faits Sales contient in enregistrement avec un ID de produit qui n'existe pas dans la table de dimension Product). Cette erreur se produit lors du traitement des partitions, ou du traitement des dimensions en flocons. |
ReportAndContinue consigne et comptabilise l'erreur. |
ReportAndStop signale l'erreur et arrête le traitement immédiatement, indépendamment du nombre maximal d'erreurs.IgnoreError ne consigne pas ou ne comptabilise pas l'erreur ; le traitement continue tant que le nombre d'erreurs est inférieur au nombre maximal. Les enregistrements qui déclenchent cette erreur sont convertis en membre inconnu par défaut, mais vous pouvez modifier la propriété KeyErrorAction de façon à les ignorer. |
KeyDuplicate Se produit lorsque des clés d'attribut en double sont détectées dans une dimension. Dans la plupart des cas, il est possible de disposer de clés d'attribut dupliquées, mais cette erreur vous informe des doublons afin que vous puissiez rechercher dans la dimension les erreurs de conception qui peuvent entraîner des relations incohérentes entre les attributs. |
IgnoreError ne consigne pas ou ne comptabilise pas l'erreur ; le traitement continue tant que le nombre d'erreurs est inférieur au nombre maximal. |
ReportAndContinue consigne et comptabilise l'erreur.ReportAndStop signale l'erreur et arrête le traitement immédiatement, indépendamment du nombre maximal d'erreurs. |
NullKeyNotAllowed Se produit lorsque NullProcessing = Error est défini sur un attribut de dimension ou lorsque des valeurs null existent dans une colonne de clé d’attribut utilisée pour identifier de manière unique un membre. |
ReportAndContinue consigne et comptabilise l'erreur. |
ReportAndStop signale l'erreur et arrête le traitement immédiatement, indépendamment du nombre maximal d'erreurs.IgnoreError ne consigne pas ou ne comptabilise pas l'erreur ; le traitement continue tant que le nombre d'erreurs est inférieur au nombre maximal. Les enregistrements qui déclenchent cette erreur sont convertis en membre inconnu par défaut, mais vous pouvez définir la propriété KeyErrorAction de façon à les ignorer. |
NullKeyConvertedToUnknown Se produit lorsque des valeurs NULL sont, par la suite, converties en membre inconnu. La définition NullProcessing = ConvertToUnknown d’un attribut de dimension déclenche cette erreur. |
IgnoreError ne consigne pas ou ne comptabilise pas l'erreur ; le traitement continue tant que le nombre d'erreurs est inférieur au nombre maximal. |
Pour afficher cette erreur à titre d'information, conservez la valeur par défaut. Sinon, vous choisissez ReportAndContinue de façon à signaler l'erreur dans la fenêtre de traitement et la comptabiliser dans le nombre maximal d'erreurs.ReportAndStop signale l'erreur et arrête le traitement immédiatement, indépendamment du nombre maximal d'erreurs. |
Propriétés générales
Propriété | Valeurs |
---|---|
KeyErrorAction |
Il s'agit de l'action entreprise par le serveur lorsqu'une erreur KeyNotFound se produit. Les réponses valides à cette erreur sont ConvertToUnknown ou DiscardRecord . |
KeyErrorLogFile |
Il s'agit d'un nom de fichier défini par l'utilisateur qui doit avoir une extension de fichier .log, situé dans un dossier sur lequel le compte de services dispose des autorisations d'accès en lecture/écriture. Ce fichier journal contient uniquement les erreurs générées lors du traitement. Utilisez la Boîte noire si vous avez besoin de plus d'informations. |
KeyErrorLimit |
Il s'agit du nombre maximal d'erreurs d'intégrité des données que le serveur autorise avant que le traitement échoue. Une valeur égale à -1 indique un nombre illimité. La valeur par défaut est 0, ce qui signifie que le traitement s'arrête après la première erreur. Vous pouvez également définir un nombre entier. |
KeyErrorLimitAction |
Il s'agit de l'action entreprise par le serveur lorsque le nombre maximal d'erreurs de clé est atteint. Avec Arrêter le traitement, le traitement se termine immédiatement. Avec Arrêter l’enregistrement dans le journal, le traitement continue, mais les erreurs ne sont plus signalées ou comptabilisées. |
Emplacement de définition des propriétés de configuration d'erreur
Utilisez les pages de propriétés dans SQL Server Management Studio après le déploiement de la base de données ou dans le projet de modèle dans SQL Server Data Tools. Les mêmes propriétés sont disponibles dans les deux outils. Vous pouvez également définir les propriétés de configuration d'erreur dans le fichier msmdrsrv.ini pour modifier les valeurs par défaut du serveur pour la configuration d'erreur, et dans les commandes Batch
et Process
si le traitement s'exécute en tant qu'opération faisant l'objet d'un script.
Vous pouvez définir la configuration d'erreur sur n'importe quel objet pouvant être traité en tant qu'opération autonome.
SQL Server Management Studio
Dans l’Explorateur d’objets, cliquez sur Propriétés , puis sur l’un de ces objets : dimension, cube ou partition.
Dans Propriétés, cliquez sur Configuration d’erreur.
SQL Server Data Tools
Dans l'Explorateur de solutions, double-cliquez sur une dimension ou sur un cube.
ErrorConfiguration
apparaît dans Propriétés dans le volet ci-dessous.Sinon, pour une dimension unique, cliquez avec le bouton droit sur la dimension dans Explorateur de solutions, choisissez
Process
, puis choisissez Modifier les paramètres dans la boîte de dialogue Dimension de processus. Les options de configuration d'erreur s'affichent dans l'onglet Erreurs de clé de dimension.
Clés manquantes (KeyNotFound)
Les enregistrements avec une valeur de clé manquante ne sont pas ajoutés à la base de données, même lorsque les erreurs sont ignorées ou le nombre d'erreurs est illimité.
Le serveur génère l'erreur KeyNotFound
lors du traitement des partitions, lorsqu'un enregistrement de table de faits contient une valeur de clé étrangère, mais la clé étrangère n'a aucun enregistrement correspondant dans une table de dimension associée. Cette erreur se produit également lors du traitement des tables de dimension associées ou en flocons, où un enregistrement dans une dimension spécifie une clé étrangère qui n'existe pas dans la dimension associée.
Lorsqu'une erreur KeyNotFound
se produit, l'enregistrement incriminé est alloué au membre inconnu. Ce comportement est contrôlé par le biais de l’action de clé, définie sur ConvertToUnknown
, afin que vous puissiez afficher les enregistrements alloués pour une investigation plus approfondie.
Clés étrangères NULL dans une table de faits (KeyNotFound)
Par défaut, une valeur NULL dans une colonne clé étrangère d'une table de faits est convertie en zéro. En supposant que zéro n'est pas une valeur de clé étrangère valide, une erreur KeyNotFound
est consignée et comptabilisée dans le nombre maximal d'erreurs qui est zéro par défaut.
Pour autoriser la poursuite du traitement, vous pouvez gérer la valeur NULL avant conversion et recherche des erreurs. Pour ce faire, définissez sur NullProcessing
Error
.
Définir la propriété NullProcessing sur une mesure
Dans SQL Server Data Tools, dans l'Explorateur de solutions, double-cliquez sur un cube pour l'ouvrir dans le Concepteur de cube.
Cliquez avec le bouton droit sur une mesure dans le volet Mesures et choisissez Propriétés.
Dans Propriétés, développez Source pour afficher
NullProcessing
la propriété. Elle a la valeur Automatic par défaut qui, pour les éléments OLAP, convertit les valeurs NULL en zéros pour les champs contenant des données numériques.Remplacez la valeur
Error
par pour exclure tous les enregistrements ayant une valeur Null, ce qui évite la conversion null-en-numeric (zéro). Cette modification vous permet d’éviter les erreurs de clé en double liées à plusieurs enregistrements ayant zéro dans la colonne de clé, et d’éviterKeyNotFound
également les erreurs lorsqu’une clé étrangère à valeur nulle n’a pas d’équivalent de clé primaire dans une table de dimension associée.
Clés NULL dans une dimension
Pour continuer le traitement lorsque des valeurs NULL sont détectées dans les clés étrangères d'une dimension en flocons, dans un premier temps gérez les valeurs NULL en définissant NullProcessing
sur KeyColumn
de l'attribut de dimension. Cela permet d'ignorer ou de convertir l'enregistrement, avant que l'erreur KeyNotFound
ne se produise.
Vous avez deux options de gestion des valeurs NULL sur l'attribut de dimension :
Définissez
NullProcessing
=UnknownMember
pour allouer des enregistrements avec des valeurs Null au membre inconnu. Cela génère une erreurNullKeyConvertedToUnknown
, qui est ignorée par défaut.Définissez
NullProcessing
=Error
pour exclure les enregistrements avec des valeurs Null. Cela génère l'erreurNullKeyNotAllowed
, qui est consignée et comptabilisée dans le nombre maximal d'erreurs. Vous pouvez définir la propriété de configuration d’erreur sur La clé Null non autorisée pourIgnoreError
permettre au traitement de continuer.
Les valeurs NULL peuvent poser des problèmes pour les champs non-clé. De fait, les requêtes MDX retournent un résultat différent si la valeur NULL est interprétée en tant que zéro ou chaîne vide. Pour cette raison, Analysis Services fournit des options de traitement Null qui vous permettent de prédéfinir le comportement de conversion souhaité. Pour plus d’informations, consultez Définition du membre inconnu et des propriétés de traitement Null et NullProcessing .
Définir la propriété NullProcessing sur un attribut de dimension
Dans SQL Server Data Tools, dans l'Explorateur de solutions, double-cliquez sur une dimension pour l'ouvrir dans le Concepteur de dimension.
Cliquez avec le bouton droit sur un attribut dans le volet Attributs et choisissez Propriétés.
Dans Propriétés, développez KeyColumns pour afficher
NullProcessing
la propriété. Elle a la valeur Automatic par défaut, qui convertit les valeurs NULL en zéros pour les champs contenant des données numériques. Remplacez la valeur parError
ouUnknownMember
.Cette modification supprime les conditions sous-jacentes qui se déclenchent
KeyNotFound
en ignorant ou en convertissant l’enregistrement avant qu’il ne soit vérifié pour les erreurs.Selon la configuration d'erreur, ces actions entraînent une erreur qui est signalée et comptabilisée. Vous devrez peut-être ajuster des propriétés supplémentaires, telles que la définition
KeyNotFound
deReportAndContinue
ouKeyErrorLimit
sur une valeur différente de zéro, pour permettre au traitement de continuer lorsque ces erreurs sont signalées et comptabilisées.
Clés dupliquées résultant de relations incohérentes (KeyDuplicate)
Par défaut, la présence d'une valeur de clé dupliquée n'arrête pas le traitement, mais l'erreur est ignorée et l'enregistrement en double est exclu de la base de données.
Pour modifier ce comportement, affectez à KeyDuplicate
la valeur ReportAndContinue
ou ReportAndStop
pour signaler l'erreur. Vous pourrez ensuite examiner l'erreur pour déterminer les failles potentielles dans la conception de la dimension.
Modifier le nombre maximal d'erreurs ou l'action lorsque le nombre maximal d'erreurs est atteint
Vous pouvez augmenter le nombre maximal d'erreurs pour permettre plus d'erreurs lors du traitement. Il n'y a aucune indication pour augmenter le nombre maximal d'erreurs ; la valeur appropriée varie selon votre scénario. Les limites d’erreur sont spécifiées comme KeyErrorLimit
dans ErrorConfiguration
les propriétés dans SQL Server Data Tools, ou comme Nombre d’erreurs dans l’onglet Configuration des erreurs pour les propriétés des dimensions, des cubes ou des groupes de mesures dans SQL Server Management Studio.
Une fois le nombre maximal d'erreurs atteint, spécifiez que le traitement s'arrête ou que l'enregistrement dans le journal s'arrête. Par exemple, supposons que vous affectez à l'action la valeur StopLogging
avec un nombre maximal d'erreurs de 100. À la 101è erreur, le traitement continue, mais les erreurs ne sont plus consignées ou comptabilisées. Les actions de limite d’erreur sont spécifiées comme KeyErrorLimitAction
dans ErrorConfiguration
les propriétés dans SQL Server Data Tools ou action Sur l’erreur sous l’onglet Configuration de l’erreur pour les propriétés des dimensions, des cubes ou des groupes de mesures dans SQL Server Management Studio.
Définir le chemin d'accès du journal des erreurs
Vous pouvez spécifier un fichier pour stocker les messages d'erreur associés aux clés qui sont signalés lors du traitement. Par défaut, les erreurs sont visibles pendant le traitement interactif dans la fenêtre Traiter, puis ignorées si vous fermez la fenêtre ou la session. Le journal contient uniquement les informations d'erreur associées aux clés, identiques aux erreurs signalées dans les boîtes de dialogue de traitement.
Les erreurs sont enregistrées dans un fichier texte et il doit avoir une extension de fichier .log. Le fichier est vide sauf si des erreurs se produisent. Par défaut, un fichier est créé dans le dossier DATA. Vous pouvez spécifier un autre dossier tant que le compte de service Analysis Services peut écrire à cet emplacement.
Étape suivante
Décidez si les erreurs arrêtent le traitement ou sont ignorées. N'oubliez pas que seule l'erreur est ignorée. L'enregistrement ayant provoqué l'erreur n'est pas ignoré ; il est annulé ou converti en membre inconnu. Les enregistrements qui ne sont pas conformes aux règles d'intégrité des données ne sont jamais ajoutés à la base de données. Par défaut, le traitement s'arrête lorsqu'la première erreur se produit, mais vous pouvez modifier ce comportement en augmentant le nombre maximal d'erreurs. Dans le développement de cube, il peut être utile d'abaisser les règles de configuration d'erreur, ce qui autorise la poursuite du traitement, de façon à ce qu'il y ait des données à tester.
Décidez s'il faut modifier les comportements de traitement des valeurs NULL par défaut. Par défaut, les valeurs NULL dans une colonne de chaîne sont traitées en tant que valeurs vides, alors que les valeurs NULL dans une colonne numérique sont traitées en tant que zéro. Pour obtenir des instructions sur la définition du traitement de la valeur NULL sur un attribut, consultez Définition du membre inconnu et des propriétés de traitement Null .
Voir aussi
Propriétés du journal
Définition du membre inconnu et des propriétés de traitement Null