MicrosoftAccessデータベースをバックエンド/フロントエンドに分割しています。私が探しているのは、これらのファイルを毎日または毎週自動的にバックアップできるようにすることです-これを行うための最良の方法は何ですか?データベースのバックアップについて心配する必要はありません。スケジュールに従って自動的に実行されることを知っているだけです。
ありがとうございます。
回答
(以前の回答から借用ここ …)
re:実際にバックアップを実行する
ネイティブAccessデータベースのバックアップは、データベースファイル全体をコピーするだけです( Access_2003以前の場合は.mdb、Access_2007以降の場合は.accdb)。
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
のような単純なWindowsバッチファイルでも、任意のスクリプト言語で機能します。 re:バックアップの自動スケジュール
Windowsのタスクスケジューラがそれを処理します。データベースファイルをコピーするスクリプトを作成したら、スケジュールされたタスクを作成して定期的に実行できます。詳細については、MSDNの記事タスクスケジューラの使用(Windows)を参照してください。
コメント
- 'は、基本的に私が'後に行ったものです。データベースがフロントエンド/バックエンドに分割されていることに問題はありますか?バックアップ時に'が使用されている場合はどうなりますか?ありがとう。
- [1] re:フロントエンド/バックエンド-バックエンドファイルは絶えず変化するファイルなので、'が必要なファイルです(詳細)定期的なバックアップ。 [2] re:使用中のファイル(可能性があります)-その答えは簡単ではありません。共有ファイルデータベースには、その点でクライアントサーバーデータベースと同じ利点はありません。
- これはどういう意味ですか?使用中にコピーすることはできますか?
- @Parhsはい、使用中にAccessデータベースファイルをコピーすることはできます(排他的に開かれていない場合)。ただし、アクティブに使用されているときに any ファイルをコピーすることは、通常はお勧めできません。
- @Parhsソース(元の)ファイルが破損する可能性はほとんどありませんが、コピー中にソースファイルに書き込みが行われた場合、宛先ファイルは信頼できるバックアップではない可能性があります。
回答
subを記述してデータベースを指定したフォルダーにバックアップし、データベースの起動時にこのsubを実行できます。これを行うには多くの方法がありますが、私は個人的に次を使用します:
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