Vi har en Microsoft Access-database delt i backend / frontend. Det jeg leter etter er å kunne sikkerhetskopiere disse filene automatisk hver dag eller ukentlig – hva er den beste måten å gjøre om dette? Vi ønsker ikke å måtte bekymre oss for sikkerhetskopier av databasen, bare vet at den skjer automatisk etter en tidsplan.
Takk.
Svar
(Låner fra mitt tidligere svar her …)
re: faktisk utføre sikkerhetskopien
Sikkerhetskopiering av en egen Access-database er ganske enkelt et spørsmål om å kopiere hele databasefilen ( .mdb for Access_2003 og tidligere, .accdb for Access_2007 og senere). Ethvert skriptspråk vil fungere, til og med en enkel Windows-batchfil som gjør noe sånt som
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
re: automatisk planlegging av sikkerhetskopien
Oppgaveplanleggeren i Windows kan ta seg av det for deg Når du har opprettet skriptet for å kopiere databasefilen (e), kan du opprette en planlagt oppgave for å kjøre den med jevne mellomrom. Se MSDN-artikkelen Bruke oppgaveplanleggeren (Windows) for mer informasjon.
Kommentarer
- at ' er i utgangspunktet det jeg ' m etter. Er det noe problem med at databasen blir delt inn i frontend / backend? Hva om den ' er i bruk på tidspunktet for sikkerhetskopiering? Takk.
- [1] re: frontend / backend – Backend-filen er den som stadig endres, slik at ' er den som trenger (mer ) vanlige sikkerhetskopier. [2] re: fil (kan være) i bruk – Det er ikke noe enkelt svar på den. Delte databaser har ikke de samme fordelene som klient-server-databaser i den forbindelse.
- Hva betyr dette? Er det mulig å kopiere den mens den er i bruk?
- @Parhs Ja, det er mulig å kopiere en Access-databasefil mens den er i bruk (med mindre den er åpnet som eksklusiv). Å kopiere en hvilken som helst fil mens den er aktivt i bruk er vanligvis ikke en god ide.
- @Parhs Selv om det er mest usannsynlig at kildefilen (original) blir ødelagt, målfilen er kanskje ikke en pålitelig sikkerhetskopi hvis det skjedde skrivinger på kildefilen mens den ble kopiert.
Svar
Du kan skrive en sub for å sikkerhetskopiere databasen til en spesifisert mappe og kjøre denne suben når databasen startes. Det er mange måter å gjøre dette på, men jeg bruker personlig 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