Daten archivieren und wiederherstellen

Zusammenfassung

Erfahren Sie, wie Sie überflüssige Daten archivieren und diese bei Bedarf wiederherstellen, und umgehen gängige Fallstricke.

Techniken

Tabellen, SQL-Aktionsabfragen, Autowerte, GUID

Voraussetzungen

Access 97 oder höher

Beispieldateien

Archivierung97.mdb, Archivierung00.mdb

André Minhorst, Duisburg

In Access-Datenbanken kann man zwar recht große Datenmengen speichern, aber bei zwei Gigabyte ist Schluss. Wenn man an diese Grenze stößt oder aus anderen Gründen die Datenmenge reduzieren möchte – etwa um eine bessere Leistung zu erzielen -, kann man Daten archivieren. Wie Sie dabei vorgehen und gleichzeitig sicherstellen, dass die Daten sich ohne Probleme wieder herstellen lassen, erfahren Sie im vorliegenden Beitrag.

Das Archivieren von Daten erfolgt meist durch Kopieren der Daten in eine externe Datenbank. Normalerweise werden Daten in einem bestimmten Zeitintervall archiviert – etwa einmal im Monat, einmal im Jahr oder auch öfter. Das Intervall hängt davon ab, nach welchem Zeitraum Daten nicht mehr regelmäßig benötigt werden und daher im laufenden Betrieb nicht mehr zugänglich sein müssen.

Wer etwa eine Bestellverwaltung betreibt, dürfte sich von den Daten einer Bestellung beispielsweise nach Ablauf der Garantiefrist beziehungsweise Gewährleistungsfrist verabschieden können.

Sinnvoll ist es, die zu archivierenden Daten in der gleichen oder einer ähnlichen Form zu speichern – am besten in einer Access-Datenbank, deren Tabellen genau wie in der Originaldatenbank aufgebaut sind.

Das Archivieren selbst läuft in einer oder mehreren SQL-Aktionsabfragen ab, wobei die Daten zunächst in die Archivdatenbank kopiert und dann aus der Originaldatenbank gelöscht werden.

Dabei ist die Reihenfolge der Vorgänge nicht unwichtig: So sollten Sie beispielsweise bei Daten aus verknüpften Tabellen zunächst die Daten der Mastertabellen und dann erst die Daten der Detailtabellen archivieren, da sonst eventuell festgelegte referentielle Integrität nicht durchgesetzt werden kann.

Man kann in der Archivdatenbank natürlich auch auf das Festlegen von Beziehungen verzichten und einfach nur die Daten in die jeweiligen Tabellen kopieren.

Beispiel für das Archivieren

Als Beispiel dient wieder einmal die Nordwind-Datenbank: Hier sollen die Daten aus den miteinander verknüpften Tabellen Bestellungen und Bestelldetails archiviert werden. Außerdem sollen die Datensätze der Tabelle Artikel, die Auslaufartikel enthalten, deren Bestand 0 ist, archiviert werden. Auch diese werden für den laufenden Betrieb nicht mehr benötigt.

Archivieren per VBA

Die Archivierung kann nach verschiedenen Methoden durchgeführt werden, jedoch wird fast immer VBA im Spiel sein. Variabel ist der Einsatz der benötigten Aktionsabfragen: Diese können Sie wahlweise als gespeicherte Abfragen oder als SQL-Ausdrücke im VBA-Code anlegen.

Die Routine aus Quellcode 1 verwendet der besseren übersichtlichkeit halber letztere Variante.

Eine weitere Frage stellt sich zur Organisation der Archivdatenbank. Soll dies eine Datenbank sein, an deren Tabellen die archivierten Daten angehängt werden, oder soll lieber für jeden Archivierungsvorgang eine neue Datenbank angelegt werden

Wenn nicht nach wenigen Archivierungen bereits eine neue Datenbank angelegt werden muss, weil die vorherige Archivdatenbank annähernd zwei Gigabyte Daten enthält, sollten Sie die zu archivierenden Daten an die Tabellen einer einzigen Archivdatenbank anhängen.

Falls die Datenmenge sehr groß ist, erzeugen Sie besser jeweils eine neue Archivdatenbank. Im Beispiel kommt die Variante mit der Erstellung einer neuen Archivdatenbank zum Tragen.

Interessante Techniken

Die Archivierungsroutine aus Quellcode 1 offenbart einige Techniken, die bei den meisten Entwicklern nicht täglich zum Einsatz kommen dürften.

Erstellen einer neuen Datenbank

Die erste interessante Technik ist das Erstellen einer neuen Datenbank mit der CreateDatabase-Methode des DBEngine-Objekts. Die Methode erwartet zwei Parameter: den Pfad und Dateinamen der zu erstellenden Datenbank sowie eine Konstante, die die zu verwendende Sortierreihenfolge angibt. Die hier eingesetzte Konstante dbLangGeneral enthält die in Deutschland und einigen anderen Ländern übliche Sortierreihenfolge.

Der Dateiname der zu erstellenden Datei setzt sich aus dem Pfad der aktuellen Datenbank und dem aktuellen Datum im Format yyyymmdd plus der Dateiendung .mdb zusammen.

Die Routine prüft, ob die zu erstellende Archivdatenbank bereits vorhanden ist – dazu wird der beim Versuch, eine bestehende Datenbank zu überschreiben, ausgelöste Fehler behandelt.

Ist die Datenbank bereits vorhanden, wird der Benutzer gefragt, ob er die Datenbank überschreiben möchte.

Daten in andere Datenbank schreiben

Die noch leere Datenbank wird nun mit den zu archivierenden Daten gefüllt. Dazu verwendet die Routine die SELECT INTO-Anweisung, die eine neue Tabelle auf Basis der ausgewählten Felder und Daten anlegt.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar