*bump*
Also ich stehe im Moment vor genau dem gleichen Problem; leider hat hier bisher noch keiner eine Lösung gepostet.
trifid: PrimaryKey ist vorhanden.
MDAC sind die neuesten. BDS2006.
Das TAdoQuery wird zur Laufzeit erzeugt und auch ordnungsgemäß wieder freigegeben.
Database_CreateQuery ist eine Prozedur, die mir ein TAdoQuery erzeugt, Prepared auf True setzt und Datenbank zuweist etc.
LogToFile speichert mir den Parameter in eine Datei + den kompletten, im System verfügbaren Arbeitsspeicher.
Man beachte, dass ich hier wirklich nur -zu Testzwecken- q.Open und dannach direkt q.Close aufrufe. Die Daten aus der Datenbank werden also nicht in irgendwelchen Arrays etc. gespeichert!
Delphi-Quellcode:
if assigned(Database) then begin
q := NIL;
LogToFile('TThumblist.Reload.Database_CreateQuery');
Database_CreateQuery(q, Database);
try
LogToFile('TThumblist.Reload.q.SQL.Add');
// q.SQL.Add('SELECT * FROM T_Storage_Thumbs ORDER BY strDescription');
q.SQL.Add('SELECT TOP 10 * FROM T_Storage_Thumbs ORDER BY strDescription');
// q.SQL.Add('SELECT TOP 1 * FROM T_Termin');
LogToFile('TThumblist.Reload.q.SQL.Open');
q.Open;
LogToFile('TThumblist.Reload.q.Close');
q.Close;
LogToFile('TThumblist.Reload.Ende');
finally
FreeAndNil(q);
LogToFile('TThumblist.Reload.Free');
end;
Ergebnisdatei des Logs:
Zitat:
09:58: TThumblist.Reload.Start [
Ram: 502.275]
09:58: TThumblist.Reload.Database_CreateQuery [
Ram: 502.275]
09:58: TThumblist.Reload.q.SQL.Add [
Ram: 502.275]
09:58: TThumblist.Reload.q.SQL.Open [
Ram: 502.284] // <-- nach dem Ausführen von Open fehlen hier 27 MB
09:58: TThumblist.Reload.q.SQL.First [
Ram: 475.561]
09:58: TThumblist.Reload.q.Close [
Ram: 475.561]
09:58: TThumblist.Reload.Ende [
Ram: 489.940]
09:58: TThumblist.Reload.Free [
Ram: 489.940] // <-- es fehlen immernoch knapp 12 MB
Das Interessante:
Das Problem scheint nur aufzutreten, sobald eine Tabelle mit Blob-Feldern verwendet wird. Die Fehler werden wohl alle geladen und nicht wieder entladen, denn wenn ich SELECT TOP x * FROM T_Storage_Thumbs ausführe, ist der "fehlende" Arbeitsspeicher immer ein vielfaches größer als x.
Bin für Tips sehr dankbar...
Siehe auch:
http://coding.derkeiler.com/Archive/...3-11/0560.html
Auch das in der Borland
QC Berichtete Problem mit angeblichem Fix bringt keine Lösung
http://qc.borland.com/wc/qcmain.aspx?d=3635 (man muss angemeldet sein, um die Datei von
QC herunterladen zu können)