Abbiamo un database di Microsoft Access suddiviso in backend / frontend. Quello che sto cercando è essere in grado di eseguire automaticamente il backup di questi file su base giornaliera o settimanale: qual è il modo migliore per farlo? Non vogliamo preoccuparci dei backup per il database, sappi solo che avviene automaticamente in base a una pianificazione.
Grazie.
Risposta
(Prendendo in prestito dalla mia risposta precedente qui …)
re: eseguire effettivamente il backup
Il backup di un database di Access nativo è semplicemente questione di copiare lintero file di database ( .mdb per Access_2003 e versioni precedenti, .accdb per Access_2007 e versioni successive). Qualsiasi linguaggio di scripting funzionerebbe, anche un semplice file batch di Windows che fa qualcosa di simile
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
re: pianificazione automatica del backup
LUtilità di pianificazione di Windows potrebbe occuparsene per te Una volta creato lo script per copiare i file di database, è possibile creare unattività pianificata per eseguirla periodicamente. Per ulteriori informazioni, consulta larticolo di MSDN Utilizzo dellUtilità di pianificazione (Windows) .
Commenti
- che ' è fondamentalmente ciò che ' m dopo. Cè qualche problema con il database che viene suddiviso in frontend / backend? E se ' è in uso al momento del backup? Grazie.
- [1] re: frontend / backend – Il file di backend è quello che cambia costantemente, quindi ' è quello che necessita di (più ) backup regolari. [2] re: file (potrebbe essere) in uso – Non cè una risposta semplice a questo. I database a file condivisi non hanno gli stessi vantaggi dei database client-server a questo riguardo.
- Cosa significa? È possibile copiarlo mentre è in uso?
- @Parhs Sì, è possibile copiare un file di database di Access mentre è in uso (a meno che non sia stato aperto come esclusivo). Tuttavia, copiare qualsiasi file mentre è attivamente in uso di solito non è una buona idea.
- @Parhs Sebbene sia molto improbabile che il file sorgente (originale) venga danneggiato, il file di destinazione potrebbe non essere un backup affidabile se le scritture sono state eseguite sul file di origine durante la copia.
Risposta
È possibile scrivere un sub per eseguire il backup del database in una cartella specificata ed eseguire questo sub quando il database viene avviato. Ci sono molti modi per farlo, ma personalmente uso i seguenti:
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