!--a11y-->
Konfiguration des JDBC-Empfänger-Adapters 
Konfigurieren Sie den JDBC-Empfänger-Adapter, um damit XML-Messages vom Integration Server oder vom PCK in Inhalte von Datenbanktabellen umzuwandeln.
Die Adapterkonfiguration ist Teil der Festlegung eines
Kommunikationskanals im
Integration Server
oder im PCK und wird auf
der Registerkarte Parameter vorgenommen.
Zusätzlich zur Adapterkonfiguration können auf der Registerkarte Module im Modul-Prozessor
generische Module angegeben werden, die den Adapter mit Zusatzfunktionen
ausstatten.
...
1. Sie haben einen Kommunikationskanal angelegt oder einen bestehenden Kommunikationskanal geöffnet.
2. Sie haben auf der Registerkarte Parameter den Adaptertyp JDBC ausgewählt.
3. Sie haben den Adapter über den Auswahlknopf Empfänger als Empfänger-Adapter definiert.
Zur Konfiguration des Adapters machen Sie folgende Angaben:
JBDC 2.0
· XML SQL-Format
Es können Tabellenwerte in einer oder mehreren Tabellen eingefügt, geändert oder gelöscht werden. In der Datenbank können vorhandene Stored Procedures mit Übergabeparametern aufgerufen werden. In synchronen Abfragen können auch Ergebnisse von Datenbankabfragen bzw. Rückgabewerte von Stored Procedures übertragen werden.
· Natives SQL-Format
Als Inhalt der Nachricht wird eine beliebige SQL-Anweisung erwartet, die unverändert an die Datenbank zur Verarbeitung übergeben wird.
Abhängig vom gewählten Message-Protokoll erwartet der Adapter spezielle XML-Dokumentenformate in der Message vom Integration Server/vom PCK. Zu den Dokumentenformaten siehe unter: Dokumentenformate für den JDBC-Empfänger-Adapter.
Feld |
Eingabe |
JDBC-Treiber |
Java-Klasse des JDBC-Treibers, die der JDBC-Adapter laden muss, um auf den Treiber zugreifen zu können. Die Angabe variiert je nach JDBC-Treiber und muss aus den Unterlagen des jeweiligen Anbieters hervorgehen. |
Verbindung |
Adresse, unter der über den JDBC-Treiber eine Datenbankverbindung geöffnet werden kann. Die Angabe variiert je nach JDBC-Treiber und muss aus den Unterlagen des jeweiligen Anbieters hervorgehen. |
Benutzername |
Benutzername, unter dem Sie sich an der Datenbank anmelden. |
Kennwort |
Kennwort zur Anmeldung an der Datenbank mit Bestätigung |
Feld |
Eingabe |
Key-Tags erforderlich |
Setzen Sie das Kennzeichen, damit Bedingungen im Key-Tag zwingend vorhanden sein müssen. |
Interpretation von leeren String-Werten |
Hier können Sie angeben, wie leere Textfelder zu behandeln sind. · NULL-Wert Bei INSERT- und UPDATE-Anweisungen werden leere Felder wie NULL-Felder behandelt (nicht vorhanden) und nicht in die Datenbank eingefügt. · Leerer String Bei INSERT- und UPDATE-Anweisungen werden in die Spalten leere Texte eingefügt. |
Persistenz |
Erläuterung und weitere Eingaben |
Lokal |
Die Behandlung von Nachrichten des Typs Exactly Once erfolgt, wie bei den übrigen Adaptern auch, standardmäßig über die Verwaltung von Statusinformationen für diese Nachrichten im J2EE-Server. Auch in diesem Modus werden sämtliche Fehlerzustände des Adapters sowie extern eingeleitete Programmabbrüche korrekt behandelt. Eine Ausnahme hierzu bilden externe Programmabbrüche während eines Datenbank-Commit. Dann ist der Zustand der Nachrichtenverarbeitung unklar, da er erst nach Abschluss des Datenbank-Commit geändert werden kann. Eine solche Situation wird aber bei einem Neustart der Anwendung erkannt, und die Bearbeitung der abgebrochenen Nachrichtenverarbeitung kann über Konfliktauflösung gesteuert werden. Diese Angabe wirkt sich aber nur auf die Behandlung von Fehlern aus, die während einer wiederholten Bearbeitung von Nachrichten auftreten, deren erste Bearbeitung in dem oben beschriebenen unklaren Zustand verblieben war.
Konfliktauflösung · Fehler Tritt bei erneuter Bearbeitung ein Fehler auf, wird dieser bei Auswahl von Fehler als Fehler an das rufende System zurückgemeldet. · Wiederholen Tritt der Fehler aber auf, weil die Nachricht beim ersten Mal doch schon in der Datenbank gespeichert wurde und sich dort noch befindet (typischerweise wird die Datenbankschnittstelle dann den Fehler duplicate insert ausgeben, falls mindestens eines der Tabellenfelder als Primary Key definiert wurde), kann mit dem Wert Wiederholen die Bearbeitung für das sendende System erfolgreich abgeschlossen werden. Ansonsten wird das sendende System die Nachricht immer wieder erneut verschicken, und der Fehler tritt immer wieder auf. |
Datenbank |
Trotzdem verbleibt in der Behandlung von Exactly Once eine sehr kleine Lücke: Ist in der Datenbanktabelle kein Feld Primärschlüssel ausgewiesen, oder wurden die Daten von einer anderen Anwendung bereits weiterverarbeitet und anschließend gelöscht, kann die Nachricht auf diese Weise dupliziert werden, wenn die erste Verarbeitung genau nach dem Datenbank-Commit durch ein irreguläres Beenden des J2EE-Server unterbrochen wurde. Diese Lücke kann nur geschlossen werden, wenn sich die Nachrichtenverarbeitung und die Verwaltung der Statusinformationen in der gleichen Datenbank befinden, so dass ein gemeinsamer Commit-Zyklus der Verarbeitungsschritte möglich wird. Hierzu muss in der Datenbank, in der die zu schreibende Tabelle liegt, eine zusätzliche Tabelle mit zwei Spalten angelegt werden. Zur Definition der Tabelle machen Sie folgende Angaben: · Datenbanktabellenname Geben Sie den Namen der Tabelle an. · Schlüsselspaltenname In diese Spalte der Tabelle wird der Schlüssel eingetragen. · Name der Wertspalte In diese Spalte der Tabelle wird der Schlüsselwert eingetragen. |
· Escape-Symbol für Apostroph
Das Apostrophzeichen (‘) ist in der SQL-Syntax ein reserviertes Zeichen und wird daher durch ein Escape-Zeichen ersetzt, wenn es innerhalb von Wertezeichenketten vorkommt. Diese Ersatzzeichen können datenbankabhängig sein. Typisch sind \’ oder ’’(Vorgabewert). Wird ein für die verwendete Datenbank ungültiges Zeichen verwendet, gibt der Adapter eine Fehlermeldung (SQL Exception) zur SQL-Syntax aus, die von der Datenbank erzeugt wird.
· Spaltennamenbegrenzer
Abhängig von der Datenbank können Spaltennamen von einem speziellen Abgrenzungszeichen umschlossen sein, beispielsweise wenn die Namen Sonderzeichen enthalten dürfen (z.B. ein “). Dieses Zeichen kann hier angegeben werden. Voreingestellt ist kein Abgrenzungszeichen. Wird ein für die verwendete Datenbank ungültiges Zeichen verwendet, gibt der Adapter eine Fehlermeldung (SQL Exception) zur SQL-Syntax aus, die von der Datenbank erzeugt wird.
· Kommandozeile
Geben Sie einen Betriebssystembefehl an, das nach erfolgreichen Datenbankoperationen ausgeführt werden soll.
· Timeout (secs)
Geben Sie hier die maximale Laufzeit des auszuführenden Programms in Sekunden an. Nach Ablauf der Zeitspanne fährt der Adapter mit der Verarbeitung fort. Das ausführbare Programm läuft im Hintergrund weiter.
· Programm nach Timeout abbrechen
Setzen Sie das Kennzeichen, wenn der Adapter nach Ablauf des Timeout das auszuführende Programm abbrechen soll.
Der Adapter schreibt die Ausgaben (STDOUT und STDERR) des Betriebssystembefehls in den System-Trace.
Setzen Sie den Adapter Aktiv, um ihn für den Message-Austausch einzusetzen.
Um zusätzliche Parameter anzugeben, setzen Sie das Kennzeichen Erweiterter Modus.
Geben Sie an, wie oft im Fall einer SQL-Exception die Datenbankverbindung neu aufgebaut und der Zugriff wiederholt werden soll.
Ist die Anzahl der Versuche überschritten, wird der letzte Zustand an den sendenden Integration Server/an das zu sendende PCK zurückgemeldet, d.h. im Fehlerfall wird die Nachricht erst dann erneut weiterverarbeitet, wenn sie vom Integration Server/vom PCK erneut versendet wird.
Datenbanktransaktionen können in verschiedenen Abstufungen (Isolation-Levels) betrieben werden. Der JDBC-Adapter verwendet standardmäßig die höchste Isolierungsstufe (serializable), um Datenbankinkonsistenzen durch parallele Datenbanktransaktionen zu vermeiden. Bei einigen JDBC-Treibern kann eine Reduzierung dieses Level notwendig sein, wenn der Treiber bzw. das Datenbankprodukt diesen Level nicht unterstützt. Eine Reduzierung des Level kann zu Lasten der Transaktionssicherheit und der Datenintegrität gehen. Daher sollten Sie eine Reduktion nur vornehmen, wenn sie unbedingt erforderlich ist. Die zur Auswahl stehenden Optionen entsprechen den JDBC-Konstanten:
· None
· read-uncommited
· read-commited
· repeatable_read
· serializable

Der Level sollte nur wenn nötig und nur so weit wie benötigt reduziert werden. Gegebenenfalls muss dann aber anderweitig sichergestellt werden, dass keine Dateninkonsistenzen in der Datenbank erzeugt werden können, d.h. in der Regel müssen parallele Zugriffe unterbunden werden.
Setzen Sie das Kennzeichen, wenn die Transaktionsklammer, die der JDBC-Adapter benötigt um die konsistente Daten in der Datenbank sicher zu stellen, abgeschaltet werden soll.
Diese Option wird für JDBC-Treiber benötigt, die keine Transaktionen unterstützen. Es muss dann aber anderweitig sichergestellt werden, dass keine Dateninkonsistenzen in der Datenbank erzeugt werden können, d.h. in der Regel müssen parallele Zugriffe unterbunden werden.

Setzen sie dieses Kennzeichen nicht, wenn der JDBC-Treiber Transaktionen unterstützt, d.h. keine entsprechende Fehlermeldung im Normalbetrieb kommt.
Setzen Sie das Kennzeichen, wenn vor jedem Poll-Intervall die Datenbank-Verbindung freigegeben und anschließend neu aufgebaut werden soll.
Wenn SQL-Statements in einem Batch zusammengefasst werden sollen, dann setzen Sie das Kennzeichen. Dies kann zu einer erheblichen Performance-Verbesserung führen.

Es ist möglich, dass nicht jeder verfügbare JDBC-Treiber in der Lage ist, dieses Feature so zu nutzen, dass eine Performance-Verbesserung erzielt werden kann.
Der Batch-Modus wird für folgende Anweisungen nicht unterstützt:
· SELECT
· INSERT_UPDATE
· EXECUTE
· SQL_QUERY
Geben Sie zusätzliche Parameternamen und -werte in der Tabelle ein.

Zusätzliche Parameter werden über SAP-Hinweis 801367 veröffentlicht.
Geben Sie Datums- und Zeitformate für den Aufruf von Stored Procedures an. Der Format-String entspricht dem der Java-Klasse java.text.SimpleDateFormat:
Buchstabe |
Datums- oder Zeitkomponente |
Typ |
Beispiele |
G |
Epochenbezeichner |
Text |
G = AD |
y |
Jahr |
Year |
yyyy = 1996; yy = 96 |
M |
Monat in Jahr |
Month |
MMMM = Juli, MMM = Jul, MM = 07 |
w |
Woche in Jahr |
Number |
27 |
W |
Woche in Monat |
Number |
2 |
D |
Tag in Jahr |
Number |
186 |
d |
Tag in Monat |
Number |
10 |
F |
Wochentag im Monat |
Number |
2 |
E |
Tag in Woche |
Text |
Dienstag; Die |
a |
Kennzeichen am/pm |
Text |
PM |
H |
Stunde im Tag (0-23) |
Number |
0 |
k |
Stunde im Tag (1-24) |
Number |
24 |
K |
Stunde in am/pm (0-11) |
Number |
0 |
h |
Stunde in am/pm (1-12) |
Number |
12 |
m |
Minute in der Stunde |
Number |
30 |
s |
Sekunde in der Minute |
Number |
55 |
S |
Millisekunde |
Number |
978 |
z |
Zeitzone |
Allgemeine Zeitzone |
Pacific Standard Time; PST; GMT-08:00 |
Z |
Zeitzone |
RFC 822-Zeitzone |
-0800 |

dd.MM.yyyy enspricht z.B. 10.07.2005
hh.mm entspricht z.B. 09.12
K:mm a entspricht z.B. 0:30 PM