Copie de rezervă a bazei de date Access zilnic/săptămânal (Administrarea bazelor de date, Ms Access, Backup)

user21663 a intrebat.

Avem o bază de date Microsoft Access împărțită în backend/frontend. Ceea ce caut este să pot face automat o copie de rezervă a acestor fișiere zilnic sau săptămânal – care este cea mai bună modalitate de a face acest lucru? Nu vrem să ne facem griji cu privire la copiile de rezervă pentru baza de date, ci doar să știm că acestea se produc automat după un program.

Vă mulțumim.

2 răspunsuri
Gord Thompson

(Împrumutând din răspunsul meu anterior…)

re: efectuarea efectivă a copiei de rezervă

Copierea de rezervă a unei baze de date Access nativ este pur și simplu o chestiune de copiere a întregului fișier de bază de date (.mdb pentru Access_2003 și anterioare, .accdb pentru Access_2007 și ulterioare). Orice limbaj de scripting ar funcționa, chiar și un simplu fișier batch pentru Windows care face ceva de genul

copy /Y d:appsdatabasesmydatabase.accdb z:backupsdatabases*.*

re: programarea automată a copiei de rezervă

Programatorul de sarcini din Windows ar putea să se ocupe de asta pentru dvs. După ce ați creat scriptul pentru a copia fișierul (fișierele) de baze de date, puteți crea o sarcină programată pentru a o rula periodic. Consultați articolul din MSDN Utilizarea Task Scheduler (Windows) pentru mai multe informații.

Comentarii

  • în principiu, asta e ceea ce vreau să fac. Există vreo problemă cu faptul că baza de date este împărțită în frontend/backend? Ce se întâmplă dacă este în curs de utilizare în momentul copierii de rezervă? Mulțumesc. – user21663
  • 1] re: frontend/backend — Fișierul backend este cel care se modifică constant, deci acela este cel care are nevoie de backup-uri (mai) regulate. [2] re: fișierul (poate fi) în uz — Nu există un răspuns simplu la această întrebare. Bazele de date cu fișiere partajate nu au aceleași avantaje ca și bazele de date client-server în această privință. –  > Por Gord Thompson.
  • Ce înseamnă acest lucru? Este posibilă copierea acestuia în timp ce este în uz? –  > Por GorillaApe.
  • @Parhs Da, este posibil să copiați un fișier de bază de date Access în timp ce acesta este în curs de utilizare (cu excepția cazului în care a fost deschis ca Exclusiv). Cu toate acestea, copierea orice fișier în timp ce acesta este în mod activ în uz nu este de obicei o idee bună. –  > Por Gord Thompson.
  • @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 rezervă fiabilă dacă se efectuează scrieri în fișierul sursă în timp ce acesta este copiat. –  > Por Gord Thompson.
Tera

Puteți scrie un subprogram pentru a face o copie de rezervă a bazei de date într-un folder specificat și să executați acest subprogram atunci când baza de date este lansată. Există o mulțime de moduri 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 AppsBackupsYourFielName"
    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