ADO.NETの質問・雑談スレ2 (421レス)
1-

413
(3): [age] 2020/10/29(木)19:13 ID:??? AAS
質問すみません。

環境:
- OS: Windows 10 (バージョン 2004, ビルド 19041.572)
- Visual Studio: Visual Studio 2019 Community (Version 16.7.6)
- ターゲット Framework: .NET Framework 4.0/4.7.2
- Driver: Microsoft Access Driver (*.mdb, *.accdb) 16.00.4999.1000 (Access 2016 Redist)

コード概要:
デーモンとして待ち受け、要求に応じてDB(主に Access accdb データベース)のデータを返すプログラムです。

現象:
ADODB.Connection をインスタンス化した connection を Open するとき、実行開始後初回〜数回は正常に値を取得できますが、数分時間をおいた後、再度 connection を Open すると、AccessViolationException が発生します:

```
ハンドルされていない例外: System.AccessViolationException: '保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。'
```

現状:
- デーモンのコンソールには、正常時には、結果が表示されますが、異常時(今回の現象)では「致命的なエラーです。」と表示されます:

```
致命的なエラーです。

ハンドルされていない例外: System.AccessViolationException: 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
場所 ADODB.ConnectionClass.Open(String ConnectionString, String UserID, String Password, Int32 Options)
場所 Project1.Class1.Get(String[] fields, NameValueCollection nameValueCollection) 場所 C:\Users\mona\source\repos\Project1\Project1\Class1.cs:行 196
```

- "AccessViolation|fatal ado.net|adodb connection open" 等で Google 検索すると、Close 漏れだとかの指摘がありますが、Close は必ずしています。(finally 節で connection.Close() しています) <外部リンク:okwave.jp
- netsh winsock reset で改善したという事例 <外部リンク:social.msdn.microsoft.com がありましたので試しましたが改善しません。
- Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\Users\mona\Documents\db.accdb;Persist Security Info=False; のような接続文字列の代わりにODBCデータソースでシステムDSNを定義し、DSN=db を指定しても改善しません。
- Visual Studio を管理者権限で実行しても改善しません。
- 試しにコネクションを毎回新規作成していますが改善しません。

英語サイト等も見ましたが先行事例がなかなか見つからず苦慮しています。せめてヒントでもありましたらご教示いただければ幸いです。よろしくお願いいたします。
1-
あと 8 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.004s