Datensicherheit: Wie kann ich meine Access-Datenbank sichern und wiederherstellen?

Access ist schnell gebaut.
Aber wehe, die Datei ist weg. Oder kaputt. Dann ist Holland in Not.

Ich zeig Dir hier, wie Du Deine Access-Datenbank sicherst, wiederherstellst und im Alltag schützt – pragmatisch, automatisiert und robust genug für den KMU-Alltag.

Was musst Du sichern?

Access heißt fast immer: Split-Datenbank.

Du hast also:

  • Frontend (.accde oder .accdb)
    Enthält Formulare, Berichte, VBA, Makros
  • Backend (.accdb)
    Enthält Tabellen und Daten

Wichtig:
Nur das Backend enthält Daten.
Deshalb ist das Backend Deine Sicherungs-Priorität.

Noch besser: SQL Server als Backend.

Wann sichern?

Mindestens:

  • Täglich automatisch
  • Vor jedem Deployment
  • Vor größeren Imports oder Löschaktionen

Optional auch:

  • Bei Benutzer-Login (Mini-Backup)
  • Bei Schließen der Anwendung

Backup per VBA automatisieren

Beispiel: Einfaches File-Backup

Public Sub BackupDatenbank()
    Dim fs As Object
    Dim Quelle As String
    Dim Ziel As String

    Quelle = "\\Server\Daten\MeineDB_be.accdb"
    Ziel = "\\Server\Sicherung\MeineDB_be_" & Format(Now, "yyyymmdd_hhnnss") & ".accdb"

    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.CopyFile Quelle, Ziel, True

    Debug.Print "Backup erstellt: " & Ziel
End Sub

Läuft sauber, wenn der Benutzer keine exklusive Sperre hat.
Kannst Du z. B. beim Öffnen im Hintergrund ausführen.

Komprimieren und reparieren (vor dem Backup)

Access bläht sich gern auf.
Regelmäßiges Komprimieren verbessert Stabilität.

Public Sub KomprimiereDatenbank()
    Dim j As Object
    Set j = CreateObject("JRO.JetEngine")

    Dim Quelle As String
    Dim Ziel As String
    Quelle = "\\Server\Daten\MeineDB_be.accdb"
    Ziel = "\\Server\Temp\TempDB.accdb"

    j.CompactDatabase "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Quelle, _
                      "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Ziel

    Kill Quelle
    FileCopy Ziel, Quelle
    Kill Ziel
End Sub

Achtung:
Nur ausführen, wenn niemand sonst die DB geöffnet hat. Sonst knallt’s.

Wiederherstellung – schnell und gezielt

Im Ernstfall brauchst Du:

  • Letztes vollständiges Backup
  • Optional: Letzter Log-Auszug (wenn vorhanden)
  • Optionale SQL-Skripte für differenzielle Wiederherstellung (z. B. nach falschem Import)

Tipp:
Lege ein Recovery-Skript an, das die Datenbank aus dem Sicherungsordner kopiert und das Live-Backend ersetzt.

Public Sub RestoreBackup(ByVal Sicherungsdatei As String)
    Dim Ziel As String
    Ziel = "\\Server\Daten\MeineDB_be.accdb"

    FileCopy Sicherungsdatei, Ziel
    Debug.Print "Backup zurückgespielt: " & Sicherungsdatei
End Sub

Backup-Strategien in der Praxis

Manuelles Backup durch den Benutzer

Gibt Sicherheit. Aber: Meist vergessen.
Besser: Automatisieren.

Backup bei bestimmten Aktionen

Beispiel: Vor dem Monatsabschluss

If MsgBox("Backup vor Monatsabschluss erstellen?", vbYesNo) = vbYes Then
    BackupDatenbank
End If

Sicherung über Batch oder Task-Scheduler

Für Admins mit Zugriff auf das Dateisystem:

xcopy "\\Server\Daten\MeineDB_be.accdb" "\\Server\Sicherung\" /Y

Task per Windows-Taskplaner täglich um 22 Uhr.
Läuft ohne VBA – Backup auch bei geschlossener Anwendung.

Pro-Tipp: Versionierung und Sicherungszyklen

Nicht einfach alles überschreiben.
Nutze Zeitstempel im Dateinamen (yyyymmdd_hhnnss).
Halte z. B. 30 Versionen vor, dann alte löschen.

' Optional: Alte Sicherungen löschen, z. B. älter als 30 Tage

Oder nutze externe Tools wie Robocopy oder Veeam – je nach IT-Infrastruktur.

Fazit

Access ist kein Hochsicherheits-System. Aber Du kannst viel tun:

  • Tägliches Backup per VBA oder Batch
  • Versionierung der Sicherungen
  • Komprimieren zur Stabilitätsverbesserung
  • Wiederherstellung vorbereiten (nicht improvisieren)

Lieber einmal 10 Minuten Backup-Routine schreiben
… als drei Tage nach der letzten Kundenrechnung suchen.

Nach oben scrollen