※ ChatGPTを利用し、要約された質問です(原文:mdbにInsertで「メモリ不足です」)
MDBにInsertで「メモリ不足です」
このQ&Aのポイント
XP上のmdbファイル(2003形式)にDelphi7で作成したプログラムからADO(TADOConnection)で接続しています。使い方は通信のログをmdbに追加していくというものです。
600~700件程度追加すると「メモリ不足です」というエラーが出て追加できなくなってしまいます。しかし、プログラムを再起動すると、動くようになります。
レジストリからMaxLocksPerFileの値を変更したり、TADOConnectionのオブジェクトを解放して再作成するなどの対策を試しましたが、効果はありませんでした。原因と対策をご存知の方がいらしたら、よろしくお願いします。
XP上のmdbファイル(2003形式)にDelphi7で作成したプログラムからADO(TADOConnection)で接続しています。
使い方は通信のログをmdbに追加していくというものです。
最初は動いているのですが、600~700件程度追加すると「メモリ不足です」というエラーが出て追加できなくなってしまいます。
しかし、プログラムを再起動すると、動くようになります。
メモリの状態を確認すると、
起動直後 約270MB ⇒ エラー発生時 約360MB
で、メモリはまだまだ余裕があるように見受けられます。
検索して調べたところ、レジストリからMaxLocksPerFileの値を変更する方法があったため、
9500 ⇒ 200000 ⇒ 6000000 のように増やしてみましたが、効果はありませんでした。
また、ある程度動かしたら、TADOConnectionのオブジェクトを解放して再作成するように変更してみましたが、こちらも効果はありませんでした。(メモリも減っていない。キャッシュされている?)
以前はデータベースにSQL Serverを使っていたのですが、
諸事情でmdbに変更することになりました。
SQL Serverのときはこのような問題はありませんでした。
その他の情報は以下の通りです。
メモリ:512MB
プロバイダ:Microsoft Jet 4.0 OLE DB Provider
原因と対策をご存知の方がいらしたら、よろしくお願いします。
お礼
回答ありがとうございます。 テーブル数もカラム数も少ないため、制限には掛からないと思っていましたが、 制限の項目数が多そうですので、もう少し調べてみます。