0

シングルスレッドで DB を埋めるプログラムがあります。すべてのクエリに 1 つの接続を使用します。つまり、トランザクションでそれらすべてを実行できるようになります。

毎秒、SQL Server 2005 Express に入力する必要がある新しいファイル セットを取得します。

アプリケーションは 24 ~ 36 時間実行でき、クエリで突然「EAccessViolation」を取得します。

このクエリは、少なくとも 24 * 60 * 60 回実行されています。

ほとんどのクエリ(90%)にはパラメータがあるため、パラメータのないクエリでも発生するかどうかはわかりません。それらは挿入/更新であるか、パラメーターを使用して選択します。

これが発生すると、その後のすべてのクエリで同じ EAccessViolation が発生し、しばらくすると StackOverflow が発生します。

コードは、例外が処理され、次回コードが問題なく実行されるような方法で構築されています。

BCB Builder 2007 の dbGo を使用する代わりに、Cpp Builder 6.0 で ADO を実行したという唯一の変更を加えた、さまざまなクエリ (以前のバージョンから変更されていない) でこれが発生しているという事実。

Windows 版 MDAC(2.8) や CodeGear の de dbGo にあると思われます。以前のバージョン (ADO BCB6.0) ではこの問題に遭遇せず、現在 (dbGO と BCB2007) では問題が発生しているという事実は、その部分を非常に疑わしいものにしています。

このすべての理由が何であるかについて、いくつかの素晴らしいアイデアがあることを願っています。

現時点では、デスクトップでは再現できません。私はまだそれを再現しようとしていますが、それは間違いなくより多くの情報を提供します.

提案をお待ちしています。

よろしく

jvdn。

4

1 に答える 1

0

ドライバーが疑われます。別のドライバーを使用して、問題を特定できるかどうかを確認してください。また、別の構文を使用するようにクエリを書き直してみてください。接続を頻繁に再利用できますか?

于 2009-05-12T09:22:08.303 に答える