Accessの扱い方

第6回 ACCESS トラブル対処の情報2 「メモリ不足」エラーについての対処方法

今回は、トラブル対処の情報2  「メモリ不足」エラーについて

アクセス解析のキーワードに、数件ですが「ACCESS メモリ不足エラー」と言うのがあり、そう言えば昔私も困ったなーと思ったまでは良いのですが、どんな原因で、どんな方法で対処したか。。思い出せません。

そこで、このキーワードで調査して、大まかですが分類すると下記のようになるのではと思います。
1)マイクロソフトの不具合
2)jetエンジンのヴァージョン
3)メモリリーク、プログラム(VB)コーディング上の問題
4)Accessの仕様


Sponsored Links




1)マイクロソフトの不具合

(1)Access 2007 でクエリを実行するとエラー メッセージ 「メモリ不足です」 または 「クエリが複雑すぎます」 が表示される。

この問題は、Access 2007 に結合の数が 16 までという制限があることにより発生します。また、WHERE 句に大きく複雑なクエリ条件があると、エラー メッセージ「メモリ不足です」 が表示されることがあります。
http://support.microsoft.com/kb/918814/ja

2)jetエンジンのヴァージョンの問題

(1)Microsoft Access の起動時にエラー「メモリ不足のため作業を完了できません」 が表示される。
Access 97 を使用している場合、Microsoft Jet Database Engine 3.5 の更新版3.51をインストールすると改善できます。
http://support.microsoft.com/kb/161255/ja

Accessのバージョンとjetエンジンバージョンの対応表が記載されていますので、必ず参照して下さい。
Jet 4.0 データベースの動作環境を最適に保つ方法

http://support.microsoft.com/kb/303528/

 

3)メモリリーク、プログラム(VB)コーディング上の問題

(1)Access2000 フォームの開閉を何度も繰り返すとメモリ不足エラーが発生する。
現象
Windows 95 または98 上で実行する Access 2000 データベースまたはプロジェクトで、同一セッション中にフォームを何度も繰り返し開いたり閉じたりすると、システムの反応が遅くなり、次のエラー メッセージが表示されることがあります。

■メモリ不足のため、表示を更新できません。不要なアプリケーションを終了して、再度実行してください。
■ウィンドウを作成できません。システム リソースまたはメモリが不足しています。
不要なアプリケーションを終了し、再度実行してください。
■メモリを解放する方法については、Microsoft Windows のオンライン ヘルプの「メモリ、トラブルシューティング」を参照してください。

原因
Windows 95 または 98 上の Access 2000 でフォームを開いて閉じるたびに、フォント用にシステム GDI リソースが使用され、そのまま解放されません。

ほとんどの場合、このことには気付きません。ところが、24×7 環境などで長期間データベースを開いたままにし、そのデータベースのフォームを何百回も開いたり閉じたりしていると、最終的にパフォーマンスの問題とメモリ不足エラーが発生することがあります。

この現象が発生するまでにフォームを開くことができる回数は、フォームの構造と Windows で他に動作しているプログラムによって異なります。
http://support.microsoft.com/kb/248910/ja

 

(2)Access 2003 で応答なし、または強制終了する場合がある。
Access 2003、 IME 2003 または、Access 2002、 IME 2002 を使用しているとメモリ リークが発生し、Access が、応答なし、または強制終了する現象。
http://support.microsoft.com/kb/884086/ja

 

(3)98系のOSで、VBエディタを開くときにメモリ不足エラーになる。
98系のOSはすぐにリソースが無くなりますので注意です。(不要なソフトは全部落として使用する)

 

(4)VBでファイルを操作するコーディングで、最後にファイルの解放処理記述が抜けている為に、メモリ不足になる。
Rst.Close、 Set Rst = Nothing等を記述しないと、メモリリークを起こす可能性があります。

補足
1)mdbの編集作業での注意事項
mdbは、開発中に頻繁に修正すると肥大化しますので、「最適化」処理をたまに実施しながら編集しましょう。

2)mdbが、何かの拍子?で壊れることがあります。
なおらない場合には、新規mdbファイルに全てのオブジェクトを移すと、なおる可能性があります。
私などは、この方法で何度も救われています。

98時代は、よくありましたが、XPになってから減ったように思います。
開発環境も、98の時代はマシンの性能やOSの能力が、余りにも貧弱だったのだと思います。

 

(5)クエリーを使って検索する場合、Null値などの扱い方によては、メモリ不足になる場合があるようです。

・https://blog.goo.ne.jp/itachi-yang/e/08f8919673e7b84615caf449133ed071

・https://answers.microsoft.com/ja-jp/office/forum/office_2010-access/access2010/c3a25645-5c2c-4448-aeb6-9725a86f1fbe

4)Access の仕様

Microsoft社のサイトに「Accessの仕様」と云うページがあります。

Microsoft Access データベース ファイルおよびオブジェクトの制限に関する情報が含まれています。 データベースがこれらの制限を超えるということは、多くの場合、設計に問題があることを示しています。

ここに記載されている各「属性」が、最大値を超えていないか、確認する必要があります。
Accessの仕様 Microsoft社のサイト

Access でメモリ不足エラーが発生する現象の対処策について Microsoft社のサイト

Access のパフォーマンスを向上させる  Microsoft社のサイト

 

関連記事
Access 2019 の新機能について
マイクロソフト、「Access」の便利な機能を使って、業務アプリケーションを作成して活用する。

Access 2013 の新機能とAccess 2013 で廃止、変更された機能とバージョンアップの必要性について

第1回 ACCESS(アクセス)データベース作成ソフトについて
第2回 ACCESS(アクセス)データベース作成ソフトについて
第3回 ACCESS 2007の情報
第4回 ACCESS トラブル対処の情報1「mdbが壊れてしまった時」
第5回 ACCESSを「ファイル共有」で使用する場合の注意事項
第6回 ACCESS トラブル対処の情報2 「メモリ不足」エラーについて
第7回 ACCESSで Jet 4.0 データベースの動作環境を最適に保つ方法
第8回 Access 2000とMSDEを利用してクライアント/サーバーシステムを構築する
第9回 ACCESS 2010の情報
第10回 Access2000(mdb)からAccess2010(accdb)に変換する

Sponsored Links




コメント