Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   IBDAC AutoCommit klappt nicht (https://www.delphipraxis.net/163266-ibdac-autocommit-klappt-nicht.html)

hoika 22. Sep 2011 10:27

Datenbank: FB • Version: 2.0 • Zugriff über: IBDAC

IBDAC AutoCommit klappt nicht
 
Hallo #,

ich setze Connection.Autocommit auf True

Query.Open;
Query.Close;

Connection.InTransaction ist True ???
Wozu gibt es dann das AutoCommit ?

Hier etwa auch so beschreiben

http://www.devart.com/forums/viewtop...6c1cb5f82d75c6

Kann das jemand bestätigen ?

Gibt es einen WorkAround ?



Heiko

tsteinmaurer 22. Sep 2011 11:02

AW: IBDAC AutoCommit klappt nicht
 
Ja, der Thread im IBDAC Forum stammt von mir. :-D

Verwende normal IBObjects, aber für ein Projekt verwendeten wir IBDAC. Von IBO kommend, ist die Ganze AutoCommit Sache in IBDAC für mich etwas "seltsam", da es AutoCommit Properties an unterschiedlichen Stellen gibt (Connection, Query ...)

IBDAC ist jetzt schon wieder etwas her bei mir, aber ich nehme mal an, dass Connection.InTransaction ja global der Connection ist, d.h. wenn andere Transaktionen/Queries, die an dieser Connection hängen, eine Transaktion gestartet haben, dann wird Connection.InTransaction wohl True sein.

Wir hatten auch in früheren Version angemerkt, dass es etwas unlogisch ist, dass zwar bei einer Connection bzw. Query ein AutoCommit Property verfügbar ist, allerdings nicht auf TIBCTransaction Ebene. Hat sich aber vielleicht mittlerweile geändert.

Edit: Sonst wirf einfach mal ein Tracing/Monitoring an, dann siehst du, was genau passiert.

hoika 22. Sep 2011 11:13

AW: IBDAC AutoCommit klappt nicht
 
Hallo Thomas,

ja der Thread ist von dir ;)
der Breakpoint steht genau hinter dem Query.Close
Da ich keine andere Query benutze, ist der Fehler also immer noch da (Version 3.10).

Es ist ein Fehler, das Gefasel (*böse bin*) von dem IBDAC von wegen Abwärtskompatibel ist Unsinn.
Wenn sie es so nicht ändern wollen, sollen Sie halt ein StrictAutoCommit einführen (ähnlich wie TStringList.StrictDelimiter).

#Update:'#
Das mit dem AutoCommit für beide setzen hatte ich überlesen, mal ausprobieren.
Klaptp aber trotzdem nicht.
Query und DataBase haben das AutoCommit auf True, dann sollte noch dem Query.Close die Transaction commited sein,
ist sie aber nicht.


Heiko

tsteinmaurer 22. Sep 2011 11:21

AW: IBDAC AutoCommit klappt nicht
 
Vermutlich wird im Hintergrund CommitRetaining aufgerufen, was bedeutet, dass die Transaktion eigentlich noch/wieder aktiv ist. Darum auch mein Hinweis mal ein Monitoring/Tracing anzuwerfen, damit man sieht, was im Hintergrund passiert. IBDAC hat hierfür den DBMonitor oder wenn du Firebird 2.5 einsetzt, die neue Trace API mit *Werbetrommel* unserem FB TraceManager (http://www.upscene.com/go/?go=fbtm). :thumb:

Edit: Was passiert wennst ein Query.Unprepare machst?

hoika 22. Sep 2011 11:28

AW: IBDAC AutoCommit klappt nicht
 
Hallo #,

Werbung ist angekommen ;)
Will schon lange wieder ne neue IBExpert + das schicke Tracing haben *zum Chef wink*
Das Unprepare hilft nicht.
Es liegt wohl am CommitRetaining.
Das Monitoring muss ich in der App erst mal einbauen (ich weiss, wie ich das mache).


Heiko

mkinzler 22. Sep 2011 11:36

AW: IBDAC AutoCommit klappt nicht
 
Oder es wird automtisch eine neue Transaktion gestartet

hoika 22. Sep 2011 13:26

AW: IBDAC AutoCommit klappt nicht
 
Hallo,

oder so, eher wahrscheinlich ist das CommitRetaining
Bringt mir aber nix ;) ;(



Heiko

tsteinmaurer 22. Sep 2011 13:30

AW: IBDAC AutoCommit klappt nicht
 
Was passiert, wennst die Transation der Query explizit committest?

AutoCommit heisst ja nur, dass automatisch ein Commit durchgeführt wird und im Falle von InterBase/Firebird realisieren das die Komponentenhersteller in der Regel so, dass eben ein CommitRetaining ausgeführt wird, was wiederum auf Dauer schlecht für die Transaktionsstatistiken ist (gstat -h). Ausgenommen es handelt sich um eine Read-Only Transaktion im ReadCommitted Isolation-Level. Das hat bei langlaufenden Transaktionen keine negativen Auswirkungen auf die Transaktionsstatistiken.

hoika 22. Sep 2011 13:53

AW: IBDAC AutoCommit klappt nicht
 
Hallo,

Transaktion commiten
genau das will ich ja verhindern, Stichwort AutoCommit-BDE.



Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz