ADO.NETの質問・雑談スレ2 (421レス)
ADO.NETの質問・雑談スレ2 http://mevius.5ch.net/test/read.cgi/db/1234077152/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
413: NAME IS NULL [age] 2020/10/29(木) 19:13:13.83 ID:??? 質問すみません。 環境: - 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() しています) <https://okwave.jp/qa/q3428421.html> - netsh winsock reset で改善したという事例 <https://social.msdn.microsoft.com/Forums/vstudio/en-US/9e41e16b-27b2-40e3-8b6c-83930103e7b8/attempted-to-read-or-write-protected-memory-on-any-sql-connection-open-after-installing-net?forum=netfxbcl> がありましたので試しましたが改善しません。 - Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\Users\mona\Documents\db.accdb;Persist Security Info=False; のような接続文字列の代わりにODBCデータソースでシステムDSNを定義し、DSN=db を指定しても改善しません。 - Visual Studio を管理者権限で実行しても改善しません。 - 試しにコネクションを毎回新規作成していますが改善しません。 英語サイト等も見ましたが先行事例がなかなか見つからず苦慮しています。せめてヒントでもありましたらご教示いただければ幸いです。よろしくお願いいたします。 http://mevius.5ch.net/test/read.cgi/db/1234077152/413
414: 413 [sage] 2020/10/29(木) 19:35:47.21 ID:??? 書き忘れました、データ量(レコード数)ですが、データは複数のテーブルに分かれており(特に JOIN などはしていません)、多いもので 3000件弱、少ないもので数十件です。 データ件数に関係なく発生します。 http://mevius.5ch.net/test/read.cgi/db/1234077152/414
416: 413 [sage] 2020/10/30(金) 19:40:47.64 ID:??? >>415 ありがとうございます。そもそもの使い方として想定されていなくて、せいぜい ASP.NET と組み合わせるのが関の山、といったところでしょうか。 SQLite の利用も検討します。 ちなみに、コードを精査したところ、読み出したいテーブルとは別のDB(別ファイル)にレコード追加をする時にコケているようです。 別DBへの接続を止めたらアクセス違反はなくなりました。 ただ、コード上は、それぞれ別の接続を使用していますし、デバッガでステップ実行する際も、コケない時とコケる時があるので、タイミングの問題なのかと考えています。 取り急ぎは、同じDBへの書き込みで回避できるか検討したいと思います。 http://mevius.5ch.net/test/read.cgi/db/1234077152/416
418: 413 [sage] 2020/11/03(火) 18:11:33.38 ID:??? >>417 ありがとうございます。 サポート対象外とのこと、SQLiteなりSQL Server Express なりにDBを変えてみたいと思います。 本件クローズとします。 http://mevius.5ch.net/test/read.cgi/db/1234077152/418
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s