シングルスレッドで 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。