Einfach probieren und rückmelden. Es wäre interessant ob die Client Library überhaupt entladen wird.
Dann müsste die
BDE fliegen meiner Vermutung nach.
Ob das überhaupt parallel so friktionsfrei geht, kann ich mich nicht mehr erinnern. Ich habe
BDE nie benutzt. Die Support Anfragen aus Zeiten von AnyDAC sind Jahre her. Ich kann mich erinnern, dass es mal was gab in die Richtung, aber nicht mehr mit welcher Version.
Die Interfaces auf der in der Meldung verwiesen wird sind jene auf mehrere Connections im Fall bspw. von Multithreading gegenüber einem Oracle Session Pool werden gehalten.
Die dürften dich im Normalfall gar nicht berühren. Weswegen eher der Verdacht nahe liegt, dass es irgendetwas mit der An- resp. Abwesenheit der Client
DLL zu tun hat.
Vielen Dank für die Antworten ...
@MEissing
Die AnyDAC hat bereits die Property DataSetCount.
Ich werde beim Schließen der Datenbankverbindungen jetzt eine Protokollierung einbauen, die über den DataSetCount prüft, ob noch Verbindungen offen sind...
@MichaelT
Bei dieser
Exception habe ich leider das Problem, dass ich bisher keine Konstellation hinbekommen habe, in der der Fehler zuverlässig auftritt ...
Ich werde daher mal die Reihenfolge vom Schließen der Datenbankverbindungen, wie von Dir vorgeschlagen, umkehren... D. h. zuerst die AnyDac (FireDAC) Datenbankverbindungen schließen und dann die
BDE Datenbankverbindungen ...
Könnte es auch sein das der ADManager Probleme macht? Würde es eventuell mein Problem lösen, wenn ich vor dem Schließen der AnyDAC (FireDAC) Datenbankverbindungen den ADManager deaktiviere:
Delphi-Quellcode:
procedure TfrmMain.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
[...]
ADManager.Active := False;
//--------------------------------------------------------------------
try
dacConnection.Connected := False;
except
on e:
exception do
MessageDlg('
dacConnection' + #13#10 + e.
message, mtError, [mbOK], 0);
end;
//--------------------------------------------------------------------
try
BDEConnection.Connected := False;
except
on e:
exception do
MessageDlg('
BDEConnection' + #13#10 + e.
message, mtError, [mbOK], 0);
end;
[...]
end;