Mamy bazę danych Microsoft Access podzieloną na backend / frontend. To, czego szukam, to możliwość automatycznego tworzenia kopii zapasowych tych plików codziennie lub co tydzień – jak najlepiej to zrobić? Nie chcemy martwić się o kopie zapasowe bazy danych, po prostu wiemy, że jest to wykonywane automatycznie zgodnie z harmonogramem.
Dzięki.
Odpowiedź
(Pożyczając z mojej wcześniejszej odpowiedzi tutaj …)
re: faktyczne wykonanie kopii zapasowej
Tworzenie kopii zapasowej natywnej bazy danych Access to po prostu kwestia skopiowania całego pliku bazy danych ( .mdb dla Access_2003 i wcześniejszych, .accdb dla Access_2007 i nowszych). Dowolny język skryptowy działałby, nawet prosty plik wsadowy systemu Windows, który wykonuje coś takiego jak
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
re: automatyczne planowanie tworzenia kopii zapasowej
Harmonogram zadań w systemie Windows może się tym zająć Po utworzeniu skryptu w celu skopiowania plików bazy danych możesz utworzyć zaplanowane zadanie, aby uruchamiać je okresowo. Zobacz artykuł MSDN Korzystanie z Harmonogramu zadań (Windows) , aby uzyskać więcej informacji.
Komentarze
- to ' jest w zasadzie tym, czym ' m później. Czy jest jakiś problem z dzieleniem bazy danych na frontend / backend? A co, jeśli ' był używany w czasie tworzenia kopii zapasowej? Dzięki.
- [1] re: frontend / backend – plik zaplecza to ten, który stale się zmienia, więc ' jest tym, którego potrzebuje (więcej ) regularne kopie zapasowe. [2] re: plik (może być) w użyciu – Nie ma prostej odpowiedzi na to pytanie. Bazy danych ze współużytkowanymi plikami nie mają pod tym względem takich samych zalet, jak bazy danych klient-serwer.
- Co to oznacza? Czy można go skopiować, gdy jest używany?
- @Parhs Tak, można skopiować plik bazy danych programu Access, gdy jest używany (chyba że został otwarty jako wyłączny). Jednak kopiowanie dowolnego pliku, gdy jest on aktywnie używany, zwykle nie jest dobrym pomysłem.
- @Parhs Chociaż jest mało prawdopodobne, że plik źródłowy (oryginalny) zostanie uszkodzony, plik docelowy może nie być niezawodną kopią zapasową, jeśli zapisy miały miejsce w pliku źródłowym podczas jego kopiowania.
Odpowiedź
Możesz napisać sub-sub, aby wykonać kopię zapasową bazy danych w określonym folderze i uruchomić ten sub, gdy baza danych jest uruchamiana. Można to zrobić na wiele sposobów, ale osobiście używam następujących:
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