0

.Net Web サービス (両方とも Windows XP マシン上) から PostgreSQL データベースに接続しています。最近、数回、いくつかの異なるコンピューターでSystem.AccessViolationExceptionエラーが発生しました。

取得できた 1 つのスタック トレースは、ADODB.recordset を取得してフィールドの値を取得したときに発生していたことを示していました。例えば

Dim rs as ADODB.Recordset = 'initialize recordset via a query to database
MsgBox(rs("fieldName").Value)

これは常に失敗するわけではありません。めったに失敗しません。いずれかのコンピューターで memtest を実行しましたが、問題は見つかりませんでした。

問題は何でしょうか?ドライバーの場合、どのような選択肢がありますか?

4

1 に答える 1

0

最初に行うことは、ADODB プロバイダー (ドライバーと呼ばれることもあります) のアップグレードを試みることです。これは、修正された可能性のある、ある種のまれなバグを表している可能性があります。ただし、めったに失敗しないという事実は、私にとっては危険信号であり、どこかで何らかの並行性の問題を示唆しています。これはマルチスレッド アプリケーションですか? その時点で他のスレッドは何をしていますか?これが競合状態である可能性はありますか?

2 番目に確認することは、いくつかの値がプログラムを一貫してクラッシュさせる可能性があるかどうかです。バイトティアか何かにヌルが埋め込まれているのではないでしょうか?

ただし、ほとんどの場合、これはドライバーの問題です。同様の問題が発生した場合は、常にそこから開始してください。

于 2013-03-14T05:43:31.363 に答える