Access Datenbank bläht sich auf

Hallo zusammen,

Ich importiere mittels Access VBA (docmd.transferspreadsheet etc) xls-Dateien in eine Tabelle nach Access, führe an dieser Berechnungen durch und speichere das Ergebnis in einer weiteren Tabelle. Danach wird die Import Tabelle mittel „drop table“ gelöscht und die nächste xls Datei importiert und wieder werden die Berechungen ausgeführt. Bei jedem dieser Schritte verbleiben in Access temporäre Daten, die die Datenbank stetig vergrößern. Wenn ich das Programm einige 100 xls-Dateien abarbeiten lasse, kommen schon recht schnell mehrere 100 MB zusammen, die den Ablauf spürbar verlangsamen. Komprimiere ich die Datenbank, ist sie nur noch 5 MB groß.

Ich verwende Windows2000 & Access2000. Kennt jemand einen Lösungsansatz, wie ich verhindere, das sich die Datenbank so stark aufbläht? Gibt es Möglichkeiten
den Import und die Berechnungen in einer anderen temporären Datenbank durchzuführen und nur das Ergebnis dann in die Hauptdatenbank zu übernehmen?

Danke und Gruß

Christian

Hallo.

Das Problem des Aufblasens ist m.E. keine Access- spezifische Angelegenheit, sondern liegt an dem Konzept der Einmalnutzung vorhandenen Speicherbereiches - und das findest Du bei den meisten RDBMS. Vereinfacht gesagt, wird eine Datenmenge an die Adresse xxxx der Festplatte geschrieben. Wenn Du diese Datenmenge dann, wie von Dir beschrieben, per „drop table“, je, eben nicht physikalisch löschst, sondern eigentlich nur versteckst, landet die nächste Datenmenge beim Schreiben eben bei der Adresse xxxx+1. An der Adresse xxxx steht immer noch der alte Kram, nur eben unsichtbar für das RDBMS. Wie stark sich die DB aufbläht, ist davon abhängig, wie das RDBMS mit den Ressourcen umgeht - sektorenweise / blockweise oder tatsächlich Datensatz für Datensatz.

Dagegen hilft nur regelmäßiges Reorganisieren - in dem von Dir beschriebenen Fall am Besten über einen definierten Ausstieg inklusive Komprimierung.

Gruß kw

Hallo Christian,

sieh dir doch mal die Seiten von Karl Donaubauer (http://www.donkarl.com) an. Unter dem Punkt 6.6 findest Du eine Lösung zu dem Blähproblem.

Gruß

Günter

Danke für diese Hintergrundinformationen.
Die Seite von Karl Donaubauer war mir auch schon bekannt. Das Problem ist, daß während VBA Code ausgeführt wird, es nicht möglich ist die Datenbank zu komprimieren. Daher müßte ich dann das Programm unterbrechen und Komprimieren machen und dann wieder neu einsteigen.

Ich werde jetzt versuchen, die ständigen Importe in einer anderen (temp etc) Datenbank zu machen. Diese kann man laut Aussage von diversen FAQs dann komprimieren. Bisher ist aber leider so, daß Access immer in die Datenbank mit dem VBA code importiert, wenn ich docmd.transferspreadsheet benutze und nicht in eine andere.

Gruss

Christian