Altova MapForce 2023 Enterprise Edition

Gérer des exceptions de base de données

Accueil Préc Haut Suivant

Lors de l'exécution de mappages qui modifient une base de données, MapForce (ou MapForce Server, ou un programme généré par MapForce) peut éventuellement rencontrer plusieurs erreurs reliées à la base de données. Par exemple, le compte de base de données peut ne pas avoir suffisamment de privilèges pour effectuer une action de base de données spécifique, ou bien certaines contraintes de base de données peuvent exister qui empêchent le mappage d'insérer ou de mettre à jour des données invalides. Ce dernier cas de figure peut se produire, par exemple, lorsqu'une colonne de table est obligatoire mais que le mappage ne fournit pas de valeur pour cette colonne.

 

Afin de permettre d'annuler les données en cas d'apparition d'exceptions de base de données, vous pouvez configurer le mappage pour utiliser des transactions de base de données. Comme décrit plus vas, vous pouvez activer des transactions au niveau du composant de base de données et au niveau d'action de table.

 

Les paramètres de rollback transaction que vous configurez dans MapForce sont préservés lorsque vous exécutez le mappage soit avec MapForce Server, soit avec un programme généré par MapForce.

 

Transactions au niveau de composant de base de données

Pour activer les transactions au niveau du composant de base de données, procédez comme suit :

 

1.Cliquer avec la touche de droite sur le composant de base de données, et choisissez Propriétés depuis le menu contextuel (en alternative, double-cliquer sur la barre de titre du composant de base de données). Le dialogue Paramètres de composant de la base de données s'ouvre.

mf_dbtran_00

2.Cocher la case Utiliser les transactions.

 

Tous les changements effectués par le composant de base de données sont maintenant contenus dans une transaction qui sera annulée en cas d'erreur. Lorsqu'une erreur se produit pendant l'exécution de mappage, le résultat dépend de l'option que vous avez sélectionnée depuis la liste déroulante :

 

Annuler transaction supérieure et arrêter — La transaction qui contient tous les changements effectués par le composant de base de données est annulée et l'exécution du mappage s'interrompt.

Annuler transaction supérieure et continuer — Comme ci-dessus, mais l'exécution du mappage se poursuit après le rollback (par exemple, pour traiter un deuxième composant cible, le cas échéant).

 

Certains mappages peuvent contenir plusieurs composants de base de données. Ceux-ci peuvent utiliser la même connexion de base de données, ou bien, des connexions vers des base de données complètement différentes. Le résultat de ces mappages en cas d'erreur de base de données dépend du moteur d'exécution :

 

Si le mappage est effectué avec MapForce, seul un composant de cible peut être exécuté lorsque le mappage est exécuté. Il s'agit du composant dans lequel la touche Aperçubtn_component_preview_pressed est activée. Si une erreur de base de donnée se produit dans ce composant, et la coche Utiliser les transactions est activée, tous les changements effectués par le composant seront annulés.

Si le mappage est effectué avec MapForce Server ou un programme généré par MapForce, tous les composants de cible sont exécutés, séquentiellement. Dans ce cas, lorsqu'une erreur de base de données se produit, l'annulation se produira pour le composant de base de données à l'endroit où l'erreur s'est produite. Le mappage s'arrêtera ou continuera à exécuter le composant de cible suivant selon la valeur que vous avez sélectionnée depuis la liste déroulante Lorsqu'une erreur se produit, comme mentionné ci-dessus.

 

Pour plus de références à tous les paramètres disponibles dans le dialogue Paramètres de composant de base de données, voir Paramètres de composant de base de données.

 

Transactions au niveau de l'action de table

Les transactions au niveau de l'action de table contient chaque action de table individuelle (insérer, mettre à jour, etc.) dans une transaction. Avec cette configuration, si des actions d'insertion ou de mise à jour échoue dans un enregistrement, il est possible d'annuler uniquement l'action échouée actuelle et continuer le traitement d'autres enregistrements. Pour activer des transactions au niveau de l'action de table, sélectionnez la case à cocher Utiliser les transactions depuis les dialogue Actions de table de base de données (voir aussi Paramètres Actions de table de base de données).

mf_dbtran_01

Les options disponibles sont les suivantes ::

 

Annuler la transaction supérieure et arrêterSi le mappage va mettre à jour plusieurs tables possédant une relation parent-enfant, il est possible d'activer des transactions non seulement pour la table de parent, mais aussi pour la table enfant. Puisque les transactions puissent être activées sur plusieurs niveaux, "haut" se réfère à la transaction se plaçant au niveau supérieur dans la hiérarchie. C'est la transaction provenant du niveau de composant de base de données, si vous avez activé les transactions à ce niveau. Sinon, il s'agit de la transaction définie dans l'action de table supérieure, en partant du principe que le composant contient plusieurs actions de table imbriquées. Pour comprendre cette option, rappelez-vous qu'il est possible qu'un composant puisse mettre à jour plusieurs tables hiérarchiquement, comme décrit dans Insérer des données dans plusieurs tables liées. Par exemple, un composant peut avec une action "Insert" parent qui insère des enregistrements de personne et une action "Insert" imbriquée qui insère une ou plusieurs adresses pour chaque enregistrement de personne dans une table séparée. Puisque vous pouvez activer des transactions aussi bien pour les actions d'insertion, "haut" se réfère au niveau le plus élevé dans la hiérarchie (dans cet exemple, l'action d'insertion de personnes). C'est pourquoi, lorsqu'une exception est rencontrée lors de l'insertion d'une adresse, cela annule la transaction supérieure (qui se trouve au niveau de table de personne, dans cet exemple) et l'exécution s'arrête. En d'autres termes, aucun enregistrement de personnes ne sera inséré s'il n'était pas possible d'insérer l'adresse de la personne en premier lieu.

Annuler la transaction supérieure et continuer — Comme ci-dessus, mais le mappage continue d'être exécuté après l'annulation (par exemple, pour traiter un autre composant de cible, le cas échéant).

Annuler la transaction actuelle et arrêter — Lorsqu'une exception survient, cela annule uniquement les changements contenus dans la transaction actuelle ; les changements effectués précédemment en dehors de la transaction actuelle seront archivés.

Annuler la transaction actuelle et continuer — Comme ci-dessus, mais le mappage continue d'être exécuté après l'annulation .

 

Transactions au niveau de la procédure stockée

Vous pouvez aussi activer des transactions de base de données pour les procédures stockées qui sont appelées en tant que cible de données. Pour un exemple, voir Procédures stockées dans les Composants cibles. Les transactions ne sont pas prises en charge pour les procédures stockées appelées en tant que source de données (sans les paramètres d'entrée), ou celles qui sont appelées en tant qu'une fonction (avec l'entrée et la sortie).

 

Annuler

Pour voir si les transactions vont se produire au moment de l'exécution du mappage, cliquez sur l'onglet Sortie et observez le code pseudo-SQL généré par MapForce. L'image ci-dessous illustre l'aperçu d'un mappage dans lequel des transactions sont activées au niveau de composant et au niveau de l'action de table. Comme indiqué ci-dessous, une transaction principale contient toute l'opération (identifié par les commentaires --begin transaction et --commit transaction). De même, plusieurs petites transactions se produisent pour chaque opération d'insertion (celles-ci sont identifiées par la commande SAVEPOINT).

mf_dbtran_02

Lorsque le mappage est exécuté dans MapForce Server, ou depuis un programme généré par MapForce, l'annulation se produira sur la base des options que vous avez configurées tout en concevant le mappage, comme décrit ci-dessus. Par exemple, si vous avez choisi l'option Annuler la transaction supérieure et arrêter, une opération d'insertion échouée entraînera l'annulation de tous les changements, même si certaines insertions peuvent avoir réussi. Néanmoins, si vous avez sélectionné Annuler la transaction actuelle et continuer, seule l'insertion échouée sera annulée jusqu'au point d'enregistrement le plus proche, et le mappage continuera pour tenter l'insertion d'autres enregistrements.

 

Si vous exécutez un mappage activé par la transaction directement dans MapForce avec la commande de menu Sortie | Exécuter Script SQL, un dialogue vous informe lorsque l'exception de base de données est rencontrée, par exemple :

mf_dbtran_03

Vous pouvez ensuite changer le comportement suivant comme suit :

 

Annuler cette transaction et arrêter

 

La transaction actuelle est déjà annulée au moment où le dialogue survient

Une erreur s'affiche en haut de la fenêtre d'aperçu et dans la fenêtre Messages

mf_dbtran_04

Toute transaction de parent est archivée

L'exécution de mappage s'arrête avec un code d'erreur

 

Annuler cette transaction et continuer

 

La transaction actuelle est déjà annulée au moment où le dialogue survient

L'erreur est traitée en tant qu'avertissement, et sera affichée dans la fenêtre Messages lorsque l'exécution de mappage se termine.

mf_dbtran_05

Toute transaction de parent n'est pas touchée

L'exécution de mappage continue avec l'enregistrement suivant (si cette transaction ne se trouve pas au niveau du composant) ou avec le composant suivant (MapForce Server uniquement)

 

Annuler le haut et arrêter

 

La transaction actuelle est déjà annulée au moment où le dialogue survient

Une erreur s'affiche en haut de la fenêtre d'aperçu et dans la fenêtre Messages

Toute transaction de parent est annulée

L'exécution de mappage s'arrête avec un code d'erreur

 

Note :l'option Annuler le haut et arrêter est disponible dans le dialogue uniquement lorsqu'il y a des transactions imbriquées (points d'enregistrement).

 

Annuler le haut et continuer

 

La transaction actuelle est déjà annulée au moment où le dialogue survient

L'erreur est traitée en tant qu'avertissement, et sera affichée dans la fenêtre Messages lorsque l'exécution de mappage se termine.

Toute transaction de parent est annulée

L'exécution de mappage continue avec l'enregistrement suivant (si cette transaction ne se trouve pas au niveau du composant) ou avec le composant suivant (MapForce Server uniquement)

 

Note :l'option Annuler le haut et continuer est disponible dans le dialogue uniquement lorsqu'il y a des transactions imbriquées (points d'enregistrement).

© 2017-2023 Altova GmbH