---
title: Databasekoppeling met foutafhandeling voor databases
date: 2019-06-05
categories:
  - data-integration
  - database
  - database-mapping
tags:
  - data-mapping
  - database-exception-handling
  - database-mapping
  - mapforce
description: Altova MapForce bevat functies voor het afhandelen van databasefouten, waardoor beschadigde gegevens kunnen worden teruggedraaid en, indien gewenst, de rest van de databasemapping kan worden voortgezet.
---
Status: #blog

Tags:  #data-mapping #database-exception-handling #database-mapping #mapforce

Categories: [data-integration](/blog/nl/category/data-integration.md) | [database + sql](/blog/nl/category/database-sql.md) | [data-integration](/blog/nl/category/data-integration.md)
# Databasekoppeling met foutafhandeling voor databases

Kritieke bedrijfsprocessen zijn afhankelijk van betrouwbare data, en databasebeheerders en andere data-analisten willen er zeker van zijn dat de integriteit van de informatie die in databasetabellen is opgeslagen, gewaarborgd is. Tijdens geautomatiseerde ETL-processen (Extract, Transform, Load) of andere database-importtaken kunnen ongeldige gegevens worden aangetroffen, wat het succes van de procedure in gevaar kan brengen. Altova MapForce bevat functies voor het afhandelen van databasefouten, waardoor de betreffende gegevens kunnen worden teruggedraaid wanneer een fout optreedt, en optioneel verder kan worden gegaan met de rest van de database-mapping.

Bijvoorbeeld, een fout in een enkel gegevensbestand hoeft de voortgang van een mapping niet te stoppen. Dit kan bijvoorbeeld voorkomen wanneer bepaalde databasebeperkingen voorkomen dat de mapping ongeldige gegevens invoegt of bijwerkt.

![](/blog/images/container_ship5.jpg)

<!--more-->

Het inschakelen van foutafhandeling voor databases omvat alle wijzigingen aan de databasecomponent binnen transacties die kunnen worden teruggedraaid in geval van een fout. Gebruikers kunnen ervoor kiezen om door te gaan met de rest van de mapping of om de verdere uitvoering te stoppen. Transacties kunnen worden ingeschakeld op het niveau van de databasecomponent, op tabelniveau of voor opgeslagen procedures.

Foutafhandeling kan zelfs worden gecombineerd met het loggen van database-uitvoer (traceerbaarheid) om een overzicht te creëren van fouten die optreden tijdens geautomatiseerde processen.

Laten we eens kijken hoe het werkt.

De map "MapForce Voorbeelden" bevat een databasemapping en een SQLite-database die transactieverwerking en het terugdraaien van wijzigingen illustreren. Uiteraard worden deze functies ondersteund voor [alle gangbare relationele databases](https://www.altova.com/nl/mapforce#db_mapping), voor veelvoorkomende taken zoals [de conversie van PostgreSQL naar SQLite](https://www.altova.com/nl/mapforce/convert-mysql), het omzetten van XML naar SQL Server, het converteren van JSON naar Access, enzovoort.

[![Voorbeeld van datamapping om de manier waarop uitzonderingen in een database worden afgehandeld, te illustreren](/blog/images/database-mapping-1.png)](database-mapping-1.png)

Deze mapping kopieert gegevens van twee databasetabellen naar nieuwe tabellen met een vergelijkbare structuur, met uitzondering van één belangrijk verschil. In de tabel "new_addresses" van de doeldatabase zijn de velden "is_shipping" en "is_billing" niet toegestaan om null-waarden te bevatten, terwijl ze in de tabel "addresses" van de bron wel null-waarden mochten bevatten. Dit betekent dat er fouten zullen optreden tijdens de uitvoering van de mapping als er ontbrekende waarden worden aangetroffen.

We zullen drie scenario's bekijken, waarbij we verschillende opties voor foutafhandeling in databases gebruiken om fouten op verschillende manieren te beheren

- Bij de eerste fout, annuleer alle wijzigingen en stop de uitvoering van de mapping

- Annuleer alleen de transactie met de fout en ga verder

- Annuleer de meest recente transactie en ga verder

### Herstel alle wijzigingen

In de eerste situatie willen we database-foutafhandeling toepassen, zodat de doeldatabase volledig ongewijzigd blijft als er tijdens de mapping een fout optreedt. Om deze optie te implementeren, kunnen we het eigenschappenvenster voor het doeldatabasecomponent openen en transactiebeheer inschakelen:

[![Voorbeeld van transactie-instellingen voor het afhandelen van databasefouten](/blog/images/transaction-setting-1.png)](transaction-setting-1.png)

We kunnen nu de mapping uitvoeren door op de knop "Output" onderaan het mapping-venster te klikken om het SQL-uitvoeringsscript te genereren. Vervolgens kunt u de optie "SQL-script uitvoeren" selecteren in het menu "Output" boven het scriptvenster

[![Voorbeeld van een SQL-script voor het afhandelen van databasefouten](/blog/images/run-SQL-script-1.png)](run-SQL-script-1.png)

Wanneer er tijdens de uitvoering een fout optreedt, verschijnt een dialoogvenster waarin we de transactie-instellingen die we eerder hebben gekozen kunnen bevestigen of overschrijven:

[![Instellingen voor transacties bevestigen met betrekking tot foutafhandeling in de database](/blog/images/error-message-1.png)](error-message-1.png)

We klikken gewoon op "OK" om onze oorspronkelijke instellingen te bevestigen. De mapping-uitvoering stopt en het venster "Berichten" beschrijft de fout:

[![Het berichtenvenster toont de eerste foutmelding die optreedt tijdens de afhandeling van een databasefout](/blog/images/Messages-1.png)](Messages-1.png)

We kunnen het ingebouwde MapForce DB Query-venster gebruiken om de tabellen "new_users" en "new_addresses" te bekijken. We verwachten dat beide tabellen leeg zijn:

[![Een databasequery controleert of een transactie correct is teruggedraaid](/blog/images/db-query-1.png)](db-query-1.png)

Dit bevestigt dat alle gegevens die vóór de fout zijn ingevoerd, zijn teruggedraaid, met andere woorden, zijn verwijderd uit de database.

Tijdens de geautomatiseerde uitvoering, onder controle van MapForce Server, worden de instellingen voor transacties van de component gebruikt zonder enige onderbreking.

### Annuleer één transactie en ga verder

Stel je voor dat een groot bestand met externe data moet worden geïmporteerd in een database, bijvoorbeeld met tienduizend records of meer. We verwachten dat het externe bestand correct is, maar als een paar records incorrecte data bevatten, willen we alle correcte records importeren en de fouten registreren. Dit is situatie 2 van de hierboven genoemde database-foutafhandeling, gecombineerd met [database-tracking, zoals beschreven in een eerdere post](https://www.altova.com/blog/database-tracing/).

Om deze optie voor foutafhandeling in de database te implementeren voor de tabel "new_addresses", klikken we op de knop voor tabelacties en selecteren we de volgende eigenschappen:

[![Transactie-instellingen voor een voorbeeld van het afhandelen van uitzonderingen in de volgende database](/blog/images/table-actions-2.png)](table-actions-2.png)

Nu kunnen we een nieuw SQL-script genereren en dit uitvoeren met behulp van dezelfde "SQL-script uitvoeren"-opdracht die hierboven is getoond. Het venster "Berichten" zal verschillende fouten registreren. We kunnen de SQL-query opnieuw uitvoeren in het venster "Databasequery" om de gegevens te bekijken die succesvol zijn gemapt:

[![SQL-query en resultaten voor een voorbeeld van foutafhandeling in een database, waarbij een rollback wordt uitgevoerd en de verwerking wordt voortgezet](/blog/images/db-query-2.png)](db-query-2.png)

Daarnaast hebben we een XML-tracebestand gegenereerd. De afbeelding hieronder toont een gedeeltelijk overzicht in het XMLSpy [XML-bewerkingsprogramma](https://www.altova.com/nl/xmlspy-xml-editor), met een voorbeeld van een fout, gemarkeerd op regel 54:

[![Logboekregistratie van fouten tijdens het afhandelen van databasefouten](/blog/images/trace-file.png)](trace-file.png)

Een logbestand zoals dit maakt het eenvoudig om een paar foutieve gegevens te vinden en te corrigeren, zelfs als er sprake is van tienduizenden gegevens!

### Annuleer de meest recente transactie en ga verder

Situatie 3 voor de afhandeling van databasefouten voldoet aan deze bedrijfsvereiste: als het invoegen van een adres mislukt, dan mag het bijbehorende gebruikersrecord ook niet worden ingevoegd, maar de rest van de dataverwerking moet wel doorgaan.

Dit voorbeeld wordt in detail beschreven in de online help van MapForce, die automatisch wordt geïnstalleerd met MapForce, en in alle demobestanden die hier worden getoond. We laten het aan u over om [een gratis proefversie te downloaden](https://www.altova.com/nl/download) en dit scenario door te lopen, of om direct aan de slag te gaan met het implementeren van foutafhandeling in uw eigen database-mappingen!
