AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken IBDAC AutoCommit klappt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

IBDAC AutoCommit klappt nicht

Ein Thema von hoika · begonnen am 22. Sep 2011 · letzter Beitrag vom 22. Sep 2011
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 10:27
Datenbank: FB • Version: 2.0 • Zugriff über: IBDAC
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
Heiko
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#2

AW: IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 11:02
Ja, der Thread im IBDAC Forum stammt von mir.

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.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 11:13
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
Heiko

Geändert von hoika (22. Sep 2011 um 11:18 Uhr)
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#4

AW: IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 11:21
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).

Edit: Was passiert wennst ein Query.Unprepare machst?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 11:28
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
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 11:36
Oder es wird automtisch eine neue Transaktion gestartet
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 13:26
Hallo,

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



Heiko
Heiko
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#8

AW: IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 13:30
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.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: IBDAC AutoCommit klappt nicht

  Alt 22. Sep 2011, 13:53
Hallo,

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



Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz