Vi har en Microsoft Access-databas uppdelad i backend / frontend. Vad jag letar efter är att kunna säkerhetskopiera dessa filer automatiskt dagligen eller varje vecka – vad är det bästa sättet att göra åt detta? Vi vill inte behöva oroa oss för säkerhetskopior för databasen, bara vet att den sker automatiskt enligt ett schema.
Tack.
Svar
(Lånar från mitt tidigare svar här …)
re: faktiskt utför säkerhetskopiering
Säkerhetskopiering av en naturlig Access-databas är helt enkelt en fråga om att kopiera hela databasfilen ( .mdb för Access_2003 och tidigare, .accdb för Access_2007 och senare). Vilket skriptspråk som helst skulle fungera, till och med en enkel Windows-batchfil som gör något liknande
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
re: automatisk schemaläggning av säkerhetskopian
Aktivitetsschemaläggaren i Windows kan ta hand om det åt dig När du väl har skapat ditt skript för att kopiera databasfilerna kan du skapa en schemalagd uppgift för att köra den regelbundet. Se MSDN-artikeln Använda Task Scheduler (Windows) för mer information.
Kommentarer
- att ' är i princip vad jag ' efter. Finns det något problem med att databasen delas upp i frontend / backend? Vad händer om det ' används vid säkerhetskopian? Tack.
- [1] re: frontend / backend – Backendfilen är den som ständigt ändras, så att ' är den som behöver (mer ) vanliga säkerhetskopior. [2] re: fil (kan vara) i bruk – Det finns inget enkelt svar på den. Delade fildatabaser har inte samma fördelar som klientserverdatabaser i det avseendet.
- Vad betyder detta? Är det möjligt att kopiera den medan den används?
- @Parhs Ja, det är möjligt att kopiera en Access-databasfil medan den används (såvida den inte har öppnats som Exklusiv). Att kopiera vilken -fil som helst medan den används aktivt är dock vanligtvis inte en bra idé.
- @Parhs Även om det är mycket osannolikt att källfilen (original) skulle bli skadad, målfilen kanske inte är en tillförlitlig säkerhetskopia om det skedde skrivningar på källfilen medan den kopierades.
Svar
Du kan skriva en sub för att säkerhetskopiera databasen till en angiven mapp och köra den här suben när databasen startas. Det finns många sätt att göra detta, men jag använder personligen följande:
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