私は、最終的に 2 GB のファイル サイズ制限に達するまで、データベースが静かに成長するという非常に奇妙な問題を発生させた Win32 アプリケーションに取り組んでいます。ADO を使用して Access 2007 データベースに接続します。このアプリケーションは何年もうまく機能しており、そのような問題は見られません。ご想像のとおり、2 GB の制限に達すると、データベースが破損します。現在、修理のために送られたかなりの数の顧客データベースがあり、サイズはすべて約 2GB です。圧縮すると、10 MB 未満に戻ります。
時間の経過とともにデータベースの成長が見られますが、そのような規模で成長することはありません.
すべてのレコードのすべてのフィールドの内容を合計して、実際のデータがどれだけ存在するかを把握する小さなデータベース「チェッカー」を作成しました。最近圧縮されたデータベースでこの新しいツールをチェックしたところ、ツールは正しく機能していると思います。肥大化したすべてのデータベースには、それぞれ 10 MB を超えるデータはありません。
アプリの起動時にデータベースを圧縮しません。大量のデータを削除するわけではないので、データベースの圧縮は「すべき」ことではないように思えます。大規模なデータベースを使用している顧客 (いくつかありますが、以前のバージョンを使用しています)。
10 MB 未満のデータベースを 2 GB に拡張する方法を教えてください。
私たちのアプリが何をするかについてのいくつかのコメント:
ADO でデータベースが開かれていない場合、再構築は DAO を使用して行われます。
いくつかの場所でトランザクションを使用します
便宜上、特定のレコードは、検索/編集/削除する代わりに、削除して再作成すると便利です。通常、この操作には 5 ~ 30 のレコードが含まれ、各レコードは約 8K です。これは、ユーザーが [保存] を押したときにのみ発生します。
約 70 KB/レコードの他のレコード タイプがありますが、削除/再作成は使用していません。
BLOB ("OLEObject") フィールドを使用してバイナリ データを格納します。
あなたが提供できる洞察に感謝します。