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.

