Vi har en Microsoft Access-database opdelt i backend / frontend. Det jeg leder efter er at kunne sikkerhedskopiere disse filer automatisk dagligt eller ugentligt – hvad er den bedste måde at gøre dette på? Vi ønsker ikke at skulle bekymre os om sikkerhedskopier til databasen, bare ved, at den sker automatisk efter en tidsplan.
Tak.
Svar
(Låntagning fra mit tidligere svar her …)
re: faktisk udførelse af backup
Sikkerhedskopiering af en native Access-database er simpelthen et spørgsmål om at kopiere hele databasefilen ( .mdb til Access_2003 og tidligere, .accdb til Access_2007 og nyere). Ethvert script-sprog fungerer, selv en simpel Windows-batchfil, der gør noget som
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
re: automatisk planlægning af sikkerhedskopien
Task Scheduler i Windows kan tage sig af det for dig Når du først har oprettet dit script til at kopiere databasefilen (e), kan du oprette en planlagt opgave til at køre det med jævne mellemrum. Se MSDN-artiklen Brug af task Scheduler (Windows) for at få flere oplysninger.
Kommentarer
- at ' s grundlæggende hvad jeg ' m efter. Er der noget problem med databasen opdelt i frontend / backend? Hvad hvis den ' er i brug på tidspunktet for sikkerhedskopiering? Tak.
- [1] re: frontend / backend – Backend-filen er den, der konstant ændres, så ' er den, der har brug for (mere ) regelmæssige sikkerhedskopier. [2] re: fil (kan være) i brug – Der er ikke noget simpelt svar på den ene. Delte fildatabaser har ikke de samme fordele som klient-server-databaser i den henseende.
- Hvad betyder dette? Er det muligt at kopiere det, mens det er i brug?
- @Parhs Ja, det er muligt at kopiere en Access-databasefil, mens den er i brug (medmindre den er blevet åbnet som eksklusiv). Det er dog normalt ikke en god idé at kopiere enhver fil, mens den er aktivt brugt.
- @Parhs Selvom det er mest usandsynligt, at kildefilen (original) bliver beskadiget, destinationsfilen er muligvis ikke en pålidelig sikkerhedskopi, hvis der skete skrivninger på kildefilen, mens den blev kopieret.
Svar
Du kan skrive en sub for at sikkerhedskopiere databasen til en bestemt mappe og køre denne sub, når databasen startes. Der er mange måder at gøre dette på, men jeg bruger personligt følgende:
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