Avem o bază de date Microsoft Access împărțită în backend / frontend. Ceea ce caut este să pot copia automat aceste fișiere zilnic sau săptămânal – care este cel mai bun mod de a face acest lucru? Nu vrem să ne facem griji cu privire la copiile de rezervă pentru baza de date, trebuie doar să știm că se produce automat într-un program.
Vă mulțumim.
Răspuns
(Împrumut de la răspunsul meu anterior aici …)
re: efectiv efectuarea copiei de rezervă
Copierea de rezervă a unei baze de date native Access este pur și simplu o chestiune de copiere a întregului fișier de bază de date ( .mdb pentru Access_2003 și versiuni anterioare, .accdb pentru Access_2007 și versiuni ulterioare). Orice limbaj de scriptare ar funcționa, chiar și un simplu fișier batch Windows care face ceva de genul
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
re: programarea automată a copiei de rezervă
Programatorul de activități din Windows ar putea avea grijă de asta pentru dvs. Odată ce v-ați creat scriptul pentru a copia fișierul (fișierele) bazei de date, puteți crea o sarcină planificată pentru al rula periodic. Consultați articolul MSDN Utilizarea programatorului de activități (Windows) pentru mai multe informații.
Comentarii
- că ' este practic ceea ce am ' după. Există vreo problemă cu baza de date fiind împărțită în frontend / backend? Ce se întâmplă dacă ' este utilizat în momentul copierii de rezervă? Mulțumesc.
- [1] re: frontend / backend – Fișierul backend este cel care se schimbă constant, astfel încât ' să fie cel care are nevoie (mai multe ) backup-uri regulate. [2] re: file (poate fi) în uz – Nu există un răspuns simplu la acesta. Bazele de date cu fișiere partajate nu au aceleași avantaje ca bazele de date client-server în această privință.
- Ce înseamnă asta? Este posibil să îl copiați în timp ce îl folosiți?
- @Parhs Da, este posibil să copiați un fișier de bază de date Access în timp ce este utilizat (cu excepția cazului în care a fost deschis ca Exclusiv). Cu toate acestea, copierea oricărui fișier în timp ce este utilizat în mod activ nu este de obicei o idee bună.
- @Parhs Deși este foarte puțin probabil ca fișierul sursă (original) să fie corupt, este posibil ca fișierul de destinație să nu fie o copie de siguranță fiabilă în cazul în care scrierile au avut loc pe fișierul sursă în timp ce acesta a fost copiat.
Răspuns
Puteți scrie un sub pentru a face backup la baza de date într-un folder specificat și puteți rula acest sub atunci când baza de date este lansată. Există o mulțime de modalități de a face acest lucru, dar eu personal folosesc următoarele:
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