We hebben een Microsoft Access database opgesplitst in backend / frontend. Waar ik naar op zoek ben, is om automatisch een dagelijkse of wekelijkse back-up van deze bestanden te kunnen maken – wat is de beste manier om dit aan te pakken? We willen ons geen zorgen hoeven te maken over back-ups voor de database, weet alleen dat het automatisch volgens een schema gebeurt.
Bedankt.
Antwoord
(Ontleend aan mijn eerdere antwoord hier …)
re: het daadwerkelijk uitvoeren van de back-up
Een back-up maken van een native Access-database is gewoon een kwestie van het volledige databasebestand kopiëren ( .mdb voor Access_2003 en eerder, .accdb voor Access_2007 en later). Elke scripttaal zou werken, zelfs een eenvoudig Windows-batchbestand dat zoiets doet als
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
re: automatische planning van de back-up
De Taakplanner in Windows kan dat voor u regelen . Zodra u uw script heeft gemaakt om de databasebestand (en) te kopiëren, kunt u een geplande taak maken om deze periodiek uit te voeren. Zie het MSDN-artikel Taakplanner gebruiken (Windows) voor meer informatie.
Opmerkingen
- dat ' is wat ik ' m daarna heb. Is er een probleem met het splitsen van de database in frontend / backend? Wat als het ' in gebruik is op het moment van back-up? Bedankt.
- [1] re: frontend / backend – Het backend-bestand is degene die constant verandert, zodat ' degene is die (meer ) regelmatige back-ups. [2] re: file (may be) in use – Daar is geen eenvoudig antwoord op. Databases met gedeelde bestanden hebben in dat opzicht niet dezelfde voordelen als client-server databases.
- Wat betekent dit? Is het mogelijk om het te kopiëren terwijl het in gebruik is?
- @Parhs Ja, het is mogelijk om een Access-databasebestand te kopiëren terwijl het in gebruik is (tenzij het is geopend als Exclusief). Het is echter meestal geen goed idee om elk -bestand te kopiëren terwijl het actief in gebruik is.
- @Parhs Hoewel het hoogst onwaarschijnlijk is dat het (originele) bronbestand beschadigd raakt, het bestemmingsbestand is mogelijk geen betrouwbare back-up als er werd geschreven naar het bronbestand terwijl het werd gekopieerd.
Antwoord
U kunt een sub schrijven om een back-up van de database naar een opgegeven map te maken en deze sub uitvoeren wanneer de database wordt gestart. Er zijn veel manieren om dit te doen, maar ik gebruik persoonlijk het volgende:
Function fMakeBackup() As Boolean Dim Source As String Dim Target As String Dim retval As Integer Source = CurrentDb.Name Target = "Z:\My Apps\Backups\YourFielName" Target = Target & Format(Date, "mm-dd") & " " Target = Target & Format(Time, "hh-mm") & ".accdb" " create the backup retval = 0 Dim objFSO As Object Set objFSO = CreateObject("Scripting.FileSystemObject") retval = objFSO.CopyFile(Source, Target, True) Set objFSO = Nothing End Function