Moin,
ich habe mich schon auf Sir Rufo (#11) bezogen. Dass ich pro Import einer Datei tausend Mal ein commit sende was dann jedes Mal die
DB beschickt, den Cache leert und was sonst noch so, ist verständlich.
Ich habe die Commits raus genommen und laufe vor die nächste Wand.
Query.ExecSQL klappt nicht mehr. Offensichtlich hat das commit die verbundene Transaction so geerdet, dass ein Neuaufruf mit StartTransaction möglich ist.
Wie ist der genaue Ablauf? Ich habe eine
Query, die einer Transaction zugeordnet ist. Die Transaction steht auf read_committed.
Ich habe bisher Transaction.StartTransaction ->
Query.SQL.Clear ->
Query.SQL.Add ->
Query.ExecSQL. Wenn ich danach eine
Query.open abfrage, bekomme ich eine
Exception.
Ich vermute, dass ich das commit mit etwas Anderem ersetzen muss.
Grüße, Messie
Edit: wann kann ich auf das Transaction.StartTransaction verzichten? Denn das spuckt mir (Edit4: nach dem Entfernen des commit) in die Suppe. Ist das mit Performance verbunden? Also eher Transaction.Active = false und dann mit Starttransaction oder kann die die ganze Zeit offen bleiben?
Edit2: sehe ich das richtig, dass eine
Query.open (nur Lesen) kein Transaction.active braucht und eine
Query.ExecSQL (z.B. Schreiben) eine Transaction.active benötigt? Das sieht mir gerade so aus...
Edit3: ist dem
Query.Open der Zustand der Transaction wegen des Nur-Lesens egal?
Danke!