MSACCESSで0xc0000005でエラー

このQ&Aのポイント
  • MSACCESSで0xc0000005でエラーが発生し、処理Bが固まる問題が発生しています。
  • 問題のエラーコードは0xc0000005で、acedao.dllがエラーとなっています。
  • 再現が難しく進展が困難な状況ですが、解決策を探しています。
回答を見る
  • ベストアンサー

MSACCESSで0xc0000005でエラー

お世話になってます。 現在、ACCESSのシステムが入っている端末に処理A(ACCESSのVBAでテキストファイル作成) があり、処理Aから情報を受けて帳票を出力している処理B (1分毎にファイルの存在チェックを行い、存在すれば処理後、ファイル削除)(VS2005) があります。 ある日、端末がACCESSの画面を開いていてテキストファイル作成のボタンを押下後 画面が真っ白になり固まってしまいました。 イベントログを確認した所、下記のエラーが出力されていました。 <エラー内容> acedao.dllがエラー Access2007 コード 0xc0000005 まずは、再現させたいのですが中々再現もできず進みません。 何とか解決したいと思っているのですが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.2

同時アクセスの問題を軽減させたいなら、以下のように改良してみましょう。 A側 ・存在チェックに使用するキーファイルが存在していない場合のみ、データファイルを作る。 キーファイルの存在チェックは、ファイルのオープン等を使わず、FindFirstなどのフォルダ内の特定ファイルを検索するAPIを使う。 ・データファイルを作ったら、データファイルを閉じて他プロセスが自由に使えるようにしてから、キーファイルを生成する。 ・キーファイルが存在している間は「B側がデータファイルに触っている」として、一切、データファイルに触らない。 逆に言えば「キーファイルが存在してない状態なら、データファイルを自由自在にしてよい」と言う事。 要は「キーファイルの生成」は「データファイルのアクセス権の放棄」として機能する。 B側 ・存在チェックに使用するキーファイルが存在している場合のみ、データファイルをオープンする。 キーファイルの存在チェックは、ファイルのオープン等を使わず、FindFirstなどのフォルダ内の特定ファイルを検索するAPIを使う。 ・データファイルを処理し終わるまで、キーファイルは削除しない。 ・データファイルを処理し終わったら、ファイルを閉じて、データファイル、キーファイルの順番でファイル削除する。 キーファイルを削除する際は、データファイルがきちんと削除出来ているかを確認してから削除する。 ・キーファイルが存在していない間は「A側がデータファイルに書き込み中かもしれない」として、一切、データファイルに触らない。 逆に言えば「キーファイルが存在している状態なら、データファイルを自由自在にしてよい」と言う事。 要は「キーファイルの削除」は「データファイルのアクセス権の放棄」として機能する。 注意 FindFirst等のフォルダ内検索APIを使う場合は、APIを使用終了して内部メモリを開放する、終了用APIを呼び出すのと、オブジェクトの開放を忘れずに(メモリリークの原因になる) その他 この方式なら「キーファイルが生成された時間」を元に「特定の時間、A、Bのどちらかの処理が停止してデットロックしている」のが判るので、デットロック対策用のウォッチドックプロセスを作る事が出来ます。 ウォッチドックがA、Bのプロセスの停止を関知した場合、ウォッチドックプロセスでデータファイルとキーファイルを削除すると良いでしょう。 そうすると、故意に手動でA、Bのプロセスを停止させたり強制終了したとしても、自動的にデータファイルとキーファイルが削除され、フォルダに残骸が残りません。

smstec
質問者

お礼

回答、ありがとうございます。 では、この方法も含めてやってみたいと思います。 もうひとつたけ質問なのですが、考えたら同一の現象が 別システムで使用しているAccessにも起りそうなので VS2005でEXEとAccessと両方をActiveXdllみたいな形で 考えたいなと思っているのですが、何か良い方法は ありますでしょうか? よろしくお願いします。

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.1

0xc0000005は、メモリアクセス違反です。 考えられる原因は ・ファイルの作成と、ファイルの存在確認が同時に起こった ・Accessのmdbファイルを定期的に最適化していないので、mdbに正常に書き込めなくなった ・Access自体で起きているメモリリーク(Accessの不具合) などです。 再現は「事実上不可能」です。

smstec
質問者

補足

早速の回答ありがとうございます。 この現象で再現性があるとしたら ・ファイルの作成と、ファイルの存在確認が同時に起こった ですかね。 1分起きにファイル存在チェックをしているのでAccessの ファイル作成と存在チェックとを同時にいくらやっても 現象は発生しません。

関連するQ&A

  • 0xc0000034 エラー

    LIFE BOOK SH75/M FMV S75MWPを使っています。 Windows8 Windowsが起動しなくなり、ブルー画面にエラー0xc0000034が出ており、こちらで質問させて頂いて、提案して頂いた方法で復旧しようと試みています。 システム修復ディスク作成していなかったので、他のパソコンで作成し、起動しなくなったパソコンにディスクを入れ、トラブルシューティング、詳細オプション、コマンドプロントをクリックしました。 bootrec /fixmbr 操作は正常に終了。 bootrec /fixboot アクセス拒否されました。 bootrec /rebuildbcd スキャンは成功しました。 Windowsのインストールとして認識された合計数:2となっており、D:¥Windowsインストールをブート一覧に追加しますかとなり、YES、C:¥Windowsインストールブート一覧を追加しますか、YESとしてみたところ、既に存在するファイルを作成することはできませんとなりました。 これはどのような意味合いをしているのでしょうか。ここからどう対処したらいいのかがわかりません。なんとかパソコン内のデータだけでも取り出したいのですが、方法はありますでしょうか。 ※OKWAVEより補足:「富士通FMV」についての質問です。

  • MSACCESS最適化後のエラーについて

    MSACCESSのファイルを最適化した後に発生するエラーの対処法をお教えください 症状(あるファイルの例) [メニュー]ツール>>データベースセキュリティー>>最適化/修復 と手順を進めて処理をした場合のみ、次のメッセージが表示されます 「実行時エラー‘5’: プロシージャの呼び出し、または引数が不正です。」 で、このメッセージの“デバッグ”をクリックすると '▼フォームがロードされているかをチェック Function IsLoaded(strFrmName As String) As Boolean Const conFormDesign = 0 Dim X As Integer IsLoaded = False For X = 0 To Forms.Count - 1 If Forms(X).formName = strFrmName Then If Forms(X).CurrentView <> conFormDesign Then IsLoaded = True Exit Function End If End If Next End Function の「 If Forms(X).formName = strFrmName Then」が エラー行としてハイライト表示されます なお、ファイルの起動処理はマクロ“autoexec”で呼び出す Function AutoOpen() DoCmd.RunCommand acCmdAppMaximize DoCmd.OpenForm "FormMain" End Function です また、最適化のコードを組んだ別のACCESSファイルから呼び出して 起動した場合はエラーにはなりませんが、 一度エラーが出たファイルは、エラーになるようです DBウインドウから"FormMain"以外のフォームを起動した場合でも、 activate, open, currentのいずれか最初のイベントでエラーが出ます ダメもとでアプリケーションの修復を試みてみましたし、 一度アンロードして、再セットアップをしてみましたが、まったく同様です もちろん、以前はそんなことはありませんでしたし、 いつから、そのようになったのか心当たりがありません 私なりにネット等で調べてみましたが、 手がかりすら見いだせない体たらくですので どなたか、解決方法をお教えください 関連?質問) 上記の質問に関連して、あれこれ探っていたところ MSACCESSの新規作成の方法如何で データベースプロパティーの表示が違うということに気が付きました 右クリックのメニュー>>新規作成>>MSACCESSアプリケーションの場合 [タイトル]Access9 [作成者]alfredh [会社名]RAD test team - http://wtsoffweb スタート>>すべてのプログラム>>Microsoft Accessの場合 [タイトル]db1 [作成者]MSACCESS登録時の名前 [会社名]MSACCESS登録時の会社名 となります これはどういう違いでしょうか 最適化後に発生するエラーについての質問と関係あるでしょうか よろしくお願いします

  • エラー状態 0xc0000001

    起動しても次のメッセージボックスがでてコンピュータが進みません。セーフモードで立ち上げようとしてもセーフモードの大きい文字で同じメッセージボックスがでて初期画面まで進みません。いずれも[OK]をクリックしますと一度切れ、再度コンピューターが起動し始めまた同じメッセージボックスがでます。ご教授願います。 次のエラーのためのセキュリティアカウントマネージャーが初期化できませんでした。システムに接続されたデバイスが機能していません。エラー状態 0xc0000001 [OK]をクリックしてシステムをシャットダウンし再起動するときにセーフモードを選択してください。詳細な情報についてはイベントログを参照してください。

  • エラー"0xc 000021a"

    エラー"0xc 000021a"が表示されwindowsが起動しません。 PC:「LIFEBOOK AH40」 OS:Windows8 PC起動→ 「問題が発生したため、PCを再起動する必要があります。・・・詳細についてはオンライン・・・0xc000021a」→ 自動修復... 【最終的には】 「自動修復でPCを修復できませんでした・・・ログファイル:C:\windows\System32\Logfiles\Srt\SrtTrail.txt」 と表示され...。 [詳細オプション]で色々いじってはみましたが、ダメです。 修復方法分かる方、分かりやすく教えて下さい。 解決!! 宜しくお願いします。

  • Access97印刷系統のエラーについて

    Access97で作成されたシステムをWin2000で動かしています。 帳票を出力する際に印刷プレビューで確認し、ページ設定を変更し、 画面に戻り『閉じる』ボタンをクリックすると、Access97ごと閉じてしまう現象が起きて困っています。 その際、エラー等のメッセージもあがりません。 このような現象を経験された方いらっしゃいましたら、ご教示下さい。 すみませんが、よろしくお願い致します。

  • MSAccessを自動起動させたい

    MSAccessを使ってcsvファイルを取り込み、編集し、Excelワークシートに出力する処理をマクロで記述して行っているのですが、この処理をスケジュールドタスクに登録するなどして自動的に決めた時間に処理させる方法を教えてください。 環境は  OS WindowsXP プロフェッショナル  Access Access2002 です

  • pyExceleratorで作ったファイルのエラー

    多量な実験データ(.txt)を処理する為にpythonでxls形式で出力するファイルを作成しているのですが、生成されたファイルを開けるとデータが失われた可能性があるとのエラーが出るのです。 処理自体は実験データの最大値のみを出力するというシンプルなもので、 それをxls形式で出力するということが目的です。 一旦結果をテキストで出力したものをExcelでインポートした結果と、エラーの出るファイルを比べても数値等の欠損は見られません。 なぜこのようなエラーが出るのか、 どういった値が欠落しているのかが分からず気持ちが悪いです。 処理するデータに日本語は入っていません。 A列、1行目にはそれぞれ名前が入っており、n行m列にはそれぞれnとmを比べた結果の数値が入っているというデータです。 元のテキストはスペース区切りで改行がはいっておりますので、改行が原因かなと思ったのですが改行を削除しても同じエラーが出ます。 pyExceleratorで作ったファイルでエラーが出たことがある方や、 そのエラーの原因が分かった方がいらっしゃいましたら、 その時の事を教えていただけないでしょうか。 他に必要な情報等がありましたら随時補足させていただきます。 つたない文章での質問となり分かりにくいかと思いますが、どうぞよろしくお願いいたします。

  • PCのエラーコード 0xc000021aの原因は?

    ウィンドウズのエラーコード 0xc000021aの原因はなに? 利用中のウィンドウズマシン os8.1に ブルー画面にエラーコード 0xc000021aがでました。 電話サポートの協力もあって無事回復しましたが、その原因を知りたく思います。 サポートスタッフさんは、「マシンに静電気が溜まることがあるので…バイオスをいじって電源を…」という回答でしたが、私にはちょっと理解できませんでした。 私は詳しいほうではありませんので、原因と今後の対策を知りたいとも思っています。

  • 「いきなりPDF」データ抽出時のエラーメッセージ

    いきなりPDF>>変換メニュー 【出力ファイル形式を選ぶ】出力形式:テキスト(データ抽出) で実行したときに、「PDFファイルにテキストデータがないため、ファイルの出力ができませんでした」とのエラーメッセージが出て、処理が止まってしまいます。 プレビュー画面には問題なく表示されています。 出力形式をテキスト(文字認識)にすると、出力されます。 テキスト(データ抽出)するためのエラー回避方法があればお教えください。 ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • ディスクが読み込めない![アプリケーションエラー(0xc0000006)]

    CDを起動しようとすると「アプリケーションが正しく初期化できませんでした(0xc0000006)」というエラーが起こってしまいます。 過去にも同じような症状の方がいたみたいなのですが、当てはまる回答を見つけることができなかったので書き込みます。 具体的には、Office XPなどのセットアップディスクを起動しようとしたところエラーが起こり、インストールできませんでした。 また、音楽CDの再生もできません。 しかし過去に自分で作成した、ファイルが入ったディスクは正常に読み取ることができます。(ファイルのコピーのみなら可?) OSの再インストールをした際にこの現象が起こるようになりました。 環境は以下のとおりです。 OS:Windows XP SP1 ドライブ:GSA-4082b (DVD-R/RW/RAM/+R/+RW) マザーボード:A7V600-X 原因がまったくわからず困っています。 少しでも心当たりがある方がいれば教えていただきたいです。 よろしくお願いします。