Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   InTransaction explizit gesetzt? (https://www.delphipraxis.net/212524-intransaction-explizit-gesetzt.html)

TurboMagic 22. Feb 2023 18:52

Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC

InTransaction explizit gesetzt?
 
Hallo,

in meiner Anwendung hab' ich das Problem, dass ich irgendwo prüfe ob
"InTransaction" einer FDConnection true ist und dann eine Exception werfe.

(das ist ja genau genommen FireDAC.Comp.Client.TFDCustomConnection.InTransact ion)

Ich weiß auch welchen anderen Menüpunkt ich vorher in meiner Anwendung aufrufen muss
um das zu triggern, weiß aber nicht warum InTransaction auf true get. Alle Stellen
wo ich StartTransaction aufrufe und die da plausiblerweise reinspucken könnten sind
mit einem Breakpoint versehen und keiner dieser Breakpoints wird erreicht.

Gibt's noch irgendwas anderes, als das was die F1 Hilfe beschreibt, was InTransaction
auf true setzt?

Grüße
TurboMagic

mkinzler 22. Feb 2023 19:07

AW: InTransaction explizit gesetzt?
 
Durchsuche mal die FireDAC-Quellen, ob darin irgendwo ein Aufruf von .StartTransaction erfolgt.

hoika 22. Feb 2023 19:16

AW: InTransaction explizit gesetzt?
 
Hallo,
sollte nicht jedes einfache Open eine Transaktion starten,
wenn keine explizite Transaktion gestartet wurde.

Bei IBDAC benutze ich den DBMonitor, dort würde man das sehen.

https://docwiki.embarcadero.com/RADS...chung_(FireDAC)

TurboMagic 23. Feb 2023 17:51

AW: InTransaction explizit gesetzt?
 
Ich habe Debug DCUs = true eingestellt und in StartTransaction in FireDAC einen breakpoint gesetzt.
Nur wird der nirgends erreicht :(
Keine Ahnung wie ich rausfinden soll, welche FDQuery das verursacht. Habe mal auf gut Glück eine solche
Query vorher geschlossen, hat aber nix gebracht.

himitsu 23. Feb 2023 18:27

AW: InTransaction explizit gesetzt?
 
Sicher dass die Debuginfos beim Debuggen vom Debugger auch richtig geladen werden?

Hatte auch vor Kurzem so ein Problem.
Delphi-Quellcode:
DebugBreak;
oder
Delphi-Quellcode:
asm int 3 end;
gingen, aber F5 nicht.

Wenn du weißt welche Variable intern den Status für .InTransaction speichert,
könnte man auch mit einem Speicherhaltepunkt auf dessen Änderung reagieren.

TurboMagic 23. Feb 2023 19:32

AW: InTransaction explizit gesetzt?
 
An irgend einer anderen Stelle im Programm hat er den Breakpoint erreicht.

Delphi.Narium 24. Feb 2023 18:40

AW: InTransaction explizit gesetzt?
 
Zitat:

Zitat von TurboMagic (Beitrag 1519034)
Ich habe Debug DCUs = true eingestellt und in StartTransaction in FireDAC einen breakpoint gesetzt.
Nur wird der nirgends erreicht :(
Keine Ahnung wie ich rausfinden soll, welche FDQuery das verursacht. Habe mal auf gut Glück eine solche
Query vorher geschlossen, hat aber nix gebracht.

Muss die Transaktion denn von 'ner Query kommen?

Könnte es eventuell möglich sein, das die Connection selbst schon 'ne Transaktion startet, um z. B. Systeminfos aus der Datenbank zu holen?

Schonmal in die MON$TRANSACTIONS geschaut, ob dort was zu 'ner Transaktion zu finden ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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