Beispiel: Protokollieren von Datenbankfehlern

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele > Datenbanken und MapForce > Datenbankablaufverfolgung und Fehlerprotokollierung >

Beispiel: Protokollieren von Datenbankfehlern

In diesem Beispiel wird gezeigt, wie Sie die Datenbankablaufverfolgung und Fehlerprotokollierung für ein Mapping, in dem Daten in eine SQLite-Datenbank eingefügt werden, konfigurieren. Die Anleitung ist für alle von MapForce unterstützten Datenbanktypen sowie für andere Arten von Datenbankaktionen (wie aktualisieren, ignorieren, löschen usw.) ähnlich.

 

Sie finden das Demo-Mapping zu diesem Beispiel unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2019\MapForceExamples\DatabaseExceptions.mfd. In diesem Mapping werden Daten aus zwei Tabellen einer Datenbank in ein neues Tabellenpaar derselben Datenbank eingefügt. Das Mapping wird unter Beispiel: Transaktions-Rollback näher beschrieben. Beachten Sie, dass einige der Datensätze in der Datenbank absichtlich auf Null gesetzt sind, damit Datenbankausnahmen generiert werden.

mf_rollback_ex_01

DatabaseExceptions.mfd

Aufgabe in diesem Beispiel ist es, die Ablaufverfolgung für die Datenbankzielkomponente zu aktivieren, um festzustellen, wie viele Fehler generiert wurden und wo genau die Fehler aufgetreten sind. In der schrittweisen Anleitung unten wird beschrieben, wie Sie dies erreichen.

 

Schritt 1: Aktivieren des Transaktions-Rollback

In diesem Demo-Mapping wird der Transaktions-Rollback laut Konfiguration auf Ebene der Datenbankkomponente verwendet, d.h. wenn die erste Ausnahme auftritt, wird die Mapping-Ausführung beendet und alle Daten werden in den Originalzustand zurückversetzt. Wir wollen zuerst die Transaktions-Rollback-Optionen ändern, sodass die Mapping-Ausführung auch bei Auftreten von Ausnahmen bei einigen Datensätzen fortgesetzt wird:

 

1.Klicken Sie neben der Tabelle new_users auf die Schaltfläche mf_ic_del_a_in, aktivieren Sie das Kontrollkästchen Transaktionen verwenden und wählen Sie Rollback für aktuelle Transaktion und fortfahren.

mf_db_trace_05

2.Klicken Sie neben der Tabelle new_addresses auf die Schaltfläche mf_ic_a_in , aktivieren Sie das Kontrollkästchen Transaktionen verwenden und wählen Sie Rollback für aktuelle Transaktion und fortfahren.

 

Sie könnten den Transaktions-Rollback komplett deaktivieren. In diesem Fall würde die Mapping-Ausführung jedoch beim ersten Fehler beendet und die Änderungen würden nicht mit Rollback rückgängig gemacht, daher wird dies nicht empfohlen. In der Ablaufverfolgung und Protokollierung würde somit nur die Ausführung bis zur ersten Ausnahme berücksichtigt. Nähere Informationen zu Transaktions-Rollbacks finden Sie unter Behandlung von Datenbankausnahmen.

 

Schritt 2: Konfigurieren der Fehlerprotokollierung

Um die Ablaufverfolgung zu aktivieren, gehen Sie folgendermaßen vor:

 

1.Klicken Sie mit der rechten Maustaste auf die Titelleiste der Datenbankkomponente und wählen Sie im Kontextmenü den Befehl Eigenschaften. (Doppelklicken Sie alternativ dazu auf die Titelleiste der Datenbankkomponente). Daraufhin wird das Dialogfeld "Komponenteneinstellungen" für Datenbanken angezeigt.
2.Wählen Sie als Ablaufverfolgungsebene Fehler aus.
3.Geben Sie neben Ablaufverfolgungsdatei den Namen der Ablaufverfolgungsdatei ein (in diesem Beispiel Errors.xml). Geben Sie keinen absoluten Pfad ein, wenn Sie vorhaben, das Mapping mit MapForce Server auf anderen Rechnern oder Betriebssystemen auszuführen.

 

mf_db_trace_05a

 

Die Struktur der Datenbankzielkomponente hat sich nun geändert und es wird ein zusätzlicher Bereich mit der Struktur der Ablaufverfolgungsdatei angezeigt:

mf_db_trace_06

Sie haben bis jetzt die Ablaufverfolgung auf Ebene der Datenbankkomponente aktiviert. Folglich werden die Ablaufverfolgungseinstellungen von allen Tabellenaktionen in dieser Datenbankkomponente übernommen. In diesem Beispiel werden die Einstellungen von den Einfügeaktionen der beiden Tabellen new_users und new_addresses geerbt. Wenn Sie für jede dieser Tabellen auf die Aktionsschaltfläche mf_ic_a_in  klicken, sehen Sie die Einstellungen:

mf_db_trace_07

Klicken Sie optional auf die Schaltfläche Felder, um zu konfigurieren, welche Felder in der Ablaufverfolgungsdatei berücksichtigt oder daraus ausgenommen werden sollen. In diesem Beispiel wurden alle Felder inkludiert.

 

Schritt 3: Konfigurieren der Mapping-Ausgabe

In diesem Schritt wird gezeigt, wie Sie de Werte aus der Ablaufverfolgungsdatei auf eine andere Art von Komponente (in diesem Fall eine einfache Ausgabekomponente) mappen. Beachten Sie, dass dieser Schritt optional ist. Auch wenn Sie die Ablaufverfolgungsdatei nicht auf eine andere Komponente mappen, wird eine Fehlerprotokolldatei erzeugt. In diesem Beispiel möchten wir das Mapping jedoch explizit so konfigurieren, dass in der Ausgabe die Gesamtanzahl der gefundenen Fehler zurückgegeben wird. Gehen Sie dazu folgendermaßen vor:

 

1.Fügen Sie eine einfache Ausgabekomponente hinzu. Klicken Sie dazu auf den Menübefehl Einfügen |  Output-Komponente einfügen. Nähere Informationen zu einfachen Input-Komponenten finden Sie unter Rückgabe von String-Werten aus einem Mapping.
2.Fügen Sie eine Konstante hinzu. Klicken Sie dazu auf den Menübefehl Einfügen | Konstante. Zur näheren Beschreibung der Mapping-Ausgabe liefert die Konstante den statischen Text "Total errors: " (Fehlergesamtzahl).
3.Ziehen Sie die concat-Funktion aus dem Fenster "Bibliotheken" in das Mapping. Nähere Informationen zu vordefinierten Funktionen finden Sie unter Hinzufügen einer vordefinierten Funktion zum Mapping.

 

Die concat-Funktion verkettet, wie unten gezeigt, den Text der Konstante mit dem errors-Wert aus der Ablaufverfolgungsdatei.

mf_db_trace_08

Mit der obigen Konfiguration wird in der Ausgabe bei Ausführung des Mappings mit MapForce Server der Text: "Total errors: {value}", angezeigt, wobei value die Anzahl der zur Laufzeit aufgetretenen Fehler darstellt.

 

Eine Ausführung des Mappings zu diesem Zeitpunkt in MapForce über die Schaltfläche Vorschau btn_component_preview_pressed der Ergebniskomponente (result) ist nicht möglich und führt zu einem Fehler, da zuerst eine Ablaufverfolgungsdatei vorhanden sein muss, da die einfache Ausgabekomponente Daten aus der Ablaufverfolgungsdatei ausliest. Im nächsten Schritt wird beschrieben, wie Sie die Ablaufverfolgungsdatei erzeugen.

 

Schritt 4: Ausführen des Mappings

Um dieses Mapping mit MapForce auszuführen, gehen Sie folgendermaßen vor:

 

1.Klicken Sie in der Datenbankkomponente auf die Schaltfläche Vorschau btn_component_preview_pressed .
2.Klicken Sie auf das Register Ausgabe.
3.Klicken Sie im Menü Ausgabe auf SQL-Script ausführen. Zu diesem Zeitpunkt tritt im Mapping die erste Ausnahme auf. Dies war beabsichtigt. Daraufhin wird das Dialogfeld "Datenbanktransaktion - Exception" angezeigt.

mf_db_trace_09

4.Wählen Sie die Rollback-Optionen, wie oben gezeigt, aus und klicken Sie auf OK.

 

Anmerkung:Wenn ein Mapping von MapForce Server ausgeführt wird, erscheint kein Dialogfeld und die fehlerhaften Transaktionen werden automatisch entsprechend der in MapForce konfigurierten Rollback-Einstellungen rückgängig gemacht.

 

In diesem Beispiel werden alle fehlgeschlagenen Transaktionen nach Abschluss der Mapping-Ausführung mit Rollback rückgängig gemacht. Nur die erfolgreichen Transaktionen werden in die Datenbank übernommen. Die aufgetretenen Fehler werden in die Datei Errors.xml, von der Sie unten ein kleines Fragment sehen, geschrieben.

mf_db_trace_10

Jetzt, da die Log-Datei erzeugt wurde, wird bei einer Vorschau auf die Ausgabe die Gesamtanzahl der Fehler in der MapForce-Ausgabe angezeigt:

 

1.Klicken Sie zurück im Mapping auf die Schaltfläche Vorschau btn_component_preview_pressed der "result"-Komponente.
2.Klicken Sie auf das Register Ausgabe, um das Ergebnis zu sehen.

mf_db_trace_11

In diesem Teil des Mappings werden Daten aus der zuvor erzeugten Log-Datei ausgelesen. Falls die Log-Datei nicht vorhanden ist, wird ein Fehler generiert.


© 2019 Altova GmbH