2011-01-12 5 views
0

私はバイナリデータベースファイルと一部のアクセスデータベース2007(MDWデータベースはAccess 97にあります)と対話するモノリシックデスクトップアプリケーションを開発中です。このツールには深刻なメモリリークとパフォーマンスの問題があります。私はメモリリークを練習し、ツールは大きな入力に対しては限られたメモリを取っています(以前は大きな入力でクラッシュしていました)。大量の入力では、このツールは1〜3日間実行されます。アクセス2007接続の問題!数時間の処理の後、[ADOQuery] .ExecSQLが例外を生成しています

ただし、これで新しい問題が発生します。一定の時間が経過すると、SQLクエリ/データベース操作が失敗する。 MyAdoQuery.ExecSqlはEoleException型の例外をスローし、「Microsoft Office Accessデータベースエンジンのワークグループ情報ファイルを開くことができません」などの例外メッセージが表示されます。

大きな入力では、SQLトランザクションの量が多くなります。接続は頻繁に開閉されます。あなたの場合はうーん、私は、任意の割合で(私はPostgreを使用)アクセスに精通していないよ...提案してください

...

答えて

0

を私はアクセスエンジンのMaxLocksPerFileなどを増やすようないくつかのオプションを使用してみましたが、そのは動作していませんトランザクションを開始し、ちょうど問題になるかもしれない...あなたは(擬似コード)likle何かを使用する必要があり、その後戻ってそれらをコミットまたはロールません:

start transaction 
try 
    execute queries and stuff 
    commit transaction!! 
except 
    rollback transaction 
end; 
0

私がしたいまず最初は、ワークグループファイルの更新です現在のフォーマット。

A97はずいぶん前ですが、Jet 3.5から4.0への変更は巨大でした。戻るc。私はA2000にデプロイされたアプリケーションを持っていましたが、開発用にA97を使用していたので、ワークグループ形式はA97(Jet 3.5)でした。私が最終的にA2000用のA97を放棄したとき、私はワークグループファイルをA2000(Jet 4.0)にアップデートし、アプリケーションを使用するすべての人のパフォーマンスが向上しました。

MDWファイルを変換できる場合や、最初から作成し直す必要がある場合は思い出せません。私はこれをやっていないので、忘れてしまったことがあります。

関連する問題