延命中のAccessを守るバックアップ設計|世代管理と復元テスト
accdbのコピー1つでは守れません。使用中を避ける・複数世代・復元テストの3条件で、サポート切れAccessを守るバックアップ運用を、Access標準機能と夜間自動化の手順つきで解説します。
結論:「閉じて取る・複数世代・戻して確認」が揃って初めてバックアップです
結論から書きます。accdbを守るバックアップの最低条件は3つです。使用中の状態でコピーしないこと。複数の世代を残すこと。実際に戻して開けるか確かめておくこと。どれかが欠けるほど、いざという日に戻せないおそれが大きくなります。取り方は方式で少し違い、エクスプローラーやrobocopyでコピーするなら全員が閉じてから、Access標準のバックアップ機能なら他の利用者を閉じたうえで(分割構成のバックエンドは排他モードで)実行します。
当社に破損の相談が来る会社で、バックアップが1つもないケースはむしろ少数です。多いのは、あるのに戻せないケース。開いたままコピーしたファイルが開かない、世代が1つだけで破損後の状態を上書きしていた、残っているのは数年前のコピーだけだった。この記事では、そうならないための運用を手順込みで説明します。
サポートが切れたAccessを使い続けること自体の点検は延命チェックリスト10項目に譲り、ここではバックアップに絞ります。
accdbのコピー1つでは守れない理由
まず、開いたままのコピーの問題です。Accessのデータベースは使用中に随時書き込みが起きるため、誰かが開いている最中にエクスプローラーでファイルをコピーすると、書き込み途中の状態を写し取ってしまうおそれがあります。コピー自体は成功したように見えるのが厄介なところで、数か月後に戻そうとして初めて開けないと分かります。Microsoft公式も、バックアップの前にすべてのユーザーがデータベースを閉じるよう案内しています。
誰かが共有モードで開いているかどうかは、ロックファイルである程度見分けられます。accdbを共有モードで開くと、同じフォルダーに同名で拡張子.laccdbのファイルが自動で作られ、最後の1人が閉じると消えます(Microsoftのロックファイル解説)。ただし、これは万能の判定ではありません。排他モードで開いた場合はロックファイルが作られませんし、利用者に削除権限がない場合やデータベースが破損とマークされた場合には、閉じても残り続けることがあります。「.laccdbが無い=誰も開いていない」とは限らない、ということです。確実なのは、業務が動いていない夜間や休業時間に取り、その時間帯は誰も開かないと運用ルールで決めておくこと。ロックファイルの有無は、その補助的な確認として使ってください。
次に、世代の問題です。破損は気づいた瞬間に起きるとは限らず、数日前から静かに進んでいることがあります。直近1世代だけを上書きで残す運用だと、破損に気づいた時点でバックアップも破損後の状態、という事態が起こり得ます。しかもAccessの修復機能は万能ではなく、公式ドキュメントには、修復の過程で損傷したテーブルの一部データが切り捨てられる場合があると書かれています(データベースの最適化と修復)。破損前の世代が残っているかどうかが最後の砦です。修復そのものの手順はAccessファイルが破損したらで解説しています。
手動バックアップの基本手順(Access標準機能)
Accessには標準のバックアップ機能があり、日付の管理まで含めると単純なコピーより確実です。手順は次のとおりです。
- バックアップを実行する本人以外の利用者全員にデータベースを閉じてもらい、フォルダーに.laccdbが残っていないことを確認する
- バックアップしたいデータベースをAccessで開く(分割構成のバックエンドは排他モードで開く)
- 「ファイル」→「名前を付けて保存」→「データベースのバックアップ」を選んで保存する
- 保存先には、元ファイルと同じフォルダーではなく別のドライブやNASを指定する
既定のファイル名には元のファイル名と実行日の日付が付くので、そのまま使えば世代の識別に困りません。
テーブルとフォーム類を別ファイルに分けた分割構成で運用している場合は、データが入っているバックエンド側を優先して定期的に取ります。フロントエンドは設計を変更したときだけで足りる、というのが公式の案内です。分割していない共有運用の注意点は複数人で使うと遅い・壊れる原因もあわせてどうぞ。
自動化と世代管理の目安
手動バックアップは、人の手に頼るほど形骸化しやすいものです。当社の延命支援でも、最初の1か月は守られていたのに半年後には止まっていた、という例は少なくありません。人の記憶に頼らず、誰も開いていない夜間にWindowsのタスクスケジューラでコピーを自動実行する形をおすすめします。robocopyなどWindows標準のコマンドで足りるので、追加費用はかかりません。
VBAで「起動時にバックエンドをコピーする」仕掛けもよく見かけますが、注意が要ります。ほかのユーザーが接続している時間帯に動けば、それは開いたままコピーと同じです。夜間実行なら安全というわけでもなく、残業やAccessの閉じ忘れがあれば使用中コピーになります。当社が延命支援でバックアップを組む場合は、夜間実行に加えて、スクリプト側で.laccdbが残っていればコピーせずに通知する、という条件を入れるのを基本にしています。
何世代残すか。以下は公式仕様ではなく、当社の実務上の目安です。
| 区分 | 頻度・世代数の目安 | 何から守るか |
|---|---|---|
| 日次 | 毎営業日の夜間に1回、直近5〜10世代 | 入力ミス、直近に起きた破損 |
| 月次 | 月1回、3〜6世代 | 気づくのが遅れた破損、過去データの参照 |
| 節目 | 大きな改修や移行の直前に1つ | 変更前の状態に戻す保険 |
保存先は、元ファイルと同じディスクが壊れたら共倒れになる場所を避けます。別ドライブかNAS、できれば加えてクラウドストレージに1系統。なお、OneDriveやSharePoint上に置いたaccdbを直接開いて使う運用は公式に非推奨ですが、あれは開く場所の話です。閉じた状態のバックアップファイルの保管先としてなら、クラウドも選択肢になります。ただし同期が完了しているかの確認と復元テストは、ローカル保管と同じように必要です。
容量が気になるなら最適化を組み合わせます。accdbは1ファイル2GBが上限で、最適化(データベースの最適化/修復)は未使用領域を取り除いてファイルを小さくします。ただし順序に注意してください。公式は最適化/修復の直前にバックアップを取るよう求めているので、「バックアップ→最適化」の順が正解です。小さくなった状態を世代として残したければ、最適化後にもう1つ取ります。容量問題の全体像はAccessの2GBの壁をご覧ください。
復元テスト:戻せるかは、戻してみるまで分からない
バックアップ運用の最後の穴が復元テストです。取ることが目的になってしまい、戻せるかを一度も確かめていない。当社の目安では半年から1年に1回、次の手順で確認します。
- バックアップファイルを業務フォルダーとは別の場所にコピーする(バックアップ本体を直接開かない)
- コピーしたファイルをAccessで開き、エラーなく起動するか確認する
- 主要なフォームとレポートを2〜3個動かし、直近データの件数をざっと突き合わせる
- 実施日と結果を短くメモに残す
15分あれば終わります。この15分をやっているかどうかで、事故当日の落ち着きがまるで違います。担当者が交代したときも、引き継ぎを兼ねて一度やっておくと安心です。
もし手元のバックアップがすでに開けない、あるいは作った人が不在で開いて確認すること自体が難しいなら、運用改善の前に現状把握が必要です。無料の解析可否チェックで、そのファイルを解析できるかどうかだけ先に確かめられます。ファイルの送信は不要です。
よくある質問
Q. これまで開いたままコピーしてきたバックアップは、全部無駄ですか。
無駄とは限りません。開いたままのコピーでも開ける場合はありますが、書き込み途中を写し取っている可能性があり、整合性は保証できません。開けるかどうかはそのファイル次第なので、直近の数世代を実際に開いて確かめたうえで、今日から取り方を「使用中を避けて」に切り替えるのが現実的です。
Q. Accessに自動バックアップ機能はありますか。
標準の「データベースのバックアップ」は手動操作で、公式の手順にもスケジュール実行の方法は載っていません。閉じるときに自動で最適化するオプション(Compact on Close)はありますが、これはバックアップではなくファイルの掃除です。自動化したい場合は、タスクスケジューラなどOS側の仕組みと組み合わせます。
Q. accdbのバックアップとCSVエクスポート、どちらを残すべきですか。
役割が違うので併用がよいと考えています。accdbのバックアップはフォームやクエリを含むファイル全体の複製で、業務ごと戻せます(分割構成ではフロントエンドとバックエンドの両方が前提です。またSQL ServerやExcelなどにリンクしているテーブルの実データはaccdbに含まれないため、リンク先で別途バックアップが必要です)。CSVはデータだけですが、形式が単純でAccessがなくても読めるため、長期保存や将来の移行の下準備に向きます。日常はaccdbの世代管理、節目に主要テーブルのCSVを1部、という組み合わせが当社のおすすめです。
Q. 破損したとき、バックアップから戻す手順は。
破損したファイルをすぐ消さずに名前を変えて残し、そのうえで直近のバックアップを元の場所にコピーして差し替えます。公式の復元手順も、正常なコピーによるファイルの差し替えです。復元後は、バックアップ時点から破損までの間に入力したデータの入れ直しが必要になります。この失われる幅を小さくするのが、日次バックアップの意味です。
触れないAccessが「診断できるか」だけ、確かめませんか。
顧客データは送信不要。発注の義務もありません。
約2分・ファイル送信不要・発注義務なし/説明はオンライン・売り込みはしません