社内SEの話

日々起きたことの記録用

よく壊れるaccess mdbファイルを修復

mdbファイルをコマンドで修復

GUIで開けば直せるが・・・

MS Accessmdbファイルが破損していた場合、実際にAccessGUIで開けばメッセージが表示後修復されます。

修復後はオブジェクトなどオブジェクトなど存在しているか確認を促されます。
修復すると「のバックアップ (合計 のバックアップ (合計 見積台帳_be 個) 個)」が生成されますが、削除して構わないと思います。
影響が出たら連絡ください。
この方法だと確かに修復することはできますが、その都度開いて修復しないといけません。
スクリプトで実行をしている場合はエラーが発生して強制停止してしまいます。
もしスクリプトで実行していたのなら最後までスクリプト内で解決したいと思うはずです。

修復!

以下対処方法になります。

$dao = new-object -comobject DAO.DBEngine.120
$dao.CompactDatabase("broken.mdb","repair.mdb")

参考URL
DBEngine.CompactDatabaseメソッド(DAO)

やっていることは閉じた状態のAccessを最適化しています。

この方法で修復すればスクリプト内で解決することができます。
repair.mdbにファイル名が変わっているので、実行する時は壊れたファイルを削除して、リネームをすれば問題は無いと思います。