Anmelden

View Full Version : Hilfe! Rollback bei Transaktionen funktioniert nicht



remo2010
21-11-06, 09:29
Hallo zusammen,

ich bin auf der AS/400 ein absoluter Neuling. Wir haben bei einem Kunden eine AS/400 V5R3M00013, der Client Client V5R3M0 SI10817. Wir schreiben eine Client/Server-Anwendung, von daher betrachte ich die As400 nur von der DB2/Sql Schiene.
Wir greifen über iseriesAccess/DBexpress mit Treibern von Peter Sawatzki und Delphi auf die DB2 zu. Beim Kunden ist das knowHow auch nicht ausgeprägt, es hat aber jemand wohl letzte Woche rumgespielt und unsere Transaktionen funktionieren nicht mehr. Die DBConnection arbeitet im Status autocommit mit dem isolations/transactionslevel readcommited. Wenn ich normal Sachen ohne Transactionen mache ist alles wie erwartet (autocommit) Wenn ich aber eine Transaction starte und beispielsweise einn Datensatz einfüge, danach aber ein Rollback abschiesse, ist der Datensatz trotzdem drin :-(.
DDM Server schein gestartet zu sein, Journaling ist bei der betreffenden taballe eingeschaltet.
Wo könnte ich noch schauen, was geändert worden ist.

Noch eine Hilfe: Wenn ich mit einer Query:
SET TRANSACTION ISOLATION LEVEL NO COMMIT READ COMMITTED
abschicke, dann funktioniert es 1. mal wie gewünscht.

Ich bin mir zu 100% sicher, dass es vorletzte Woche noch einwandfrei funktioniert.
Im übrigen hat ein anderes Team, die mit ado zugreifen die gleiche Problematik.

Für einen Hinweis, oder Hilfe wäre ich sehr Dankbar.

Gruss

Thorsten Remer

pwrdwnsys
21-11-06, 20:41
keine Ahnung was das sein könnte. Aber wie schon der Elektriker sagt: messen heisst wissen !

Also schalte mal den DEBUG-Modus ein. Am besten dazu die Datei QAQQINI mit CRTDUPOBJ aus der QSYS in die QUSRSYS kopieren und den Parameter MESSAGES_DEBUG auf *YES setzten. Dann nach dem Zugriff das Joblog prüfen.

Hinterher, wenn Du den Fehler gefunden hast, die QAQQINI aus der QUSRSYS wieder löschen ! Sonst müllt es die Joblogs zu.

remo2010
23-11-06, 13:31
keine Ahnung was das sein könnte. Aber wie schon der Elektriker sagt: messen heisst wissen !

Also schalte mal den DEBUG-Modus ein. Am besten dazu die Datei QAQQINI mit CRTDUPOBJ aus der QSYS in die QUSRSYS kopieren und den Parameter MESSAGES_DEBUG auf *YES setzten. Dann nach dem Zugriff das Joblog prüfen.

Hinterher, wenn Du den Fehler gefunden hast, die QAQQINI aus der QUSRSYS wieder löschen ! Sonst müllt es die Joblogs zu.
Hallo pwrdwnsys,

Problem hat sich erledigt. War ein Fehler in der Einstellung in der Delphi-Komponente. TRANSACTION ISOLATION LEVEL war auf dirty-Read. Deshalb hat es auch eine Workunit, funktioniert, wenn ich
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
gesetzt habe.

Danke für den Tip, werde mich mal an das Debuggen auf der AS400 rantrauen.

Gruss

Thorsten