同時アクセス時のmdbファイルのエラーとは?

このQ&Aのポイント
  • Windows2000のPWSでASPとmdbファイルを使ったチャットロボットを作成していますが、同時アクセス時にエラーメッセージが表示されます。
  • エラーメッセージは「Microsoft OLE DB Provider for ODBC Drivers エラー '80004005'」で、同じmdbファイルが既に使用されているため、使用できないという内容です。
  • このエラーを回避するためには、トランザクション処理を行うことやデータの損失がないことを確認することが重要です。
回答を見る
  • ベストアンサー

同時アクセスの時って...

Windows2000のPWS(パーソナルウェブサーバー)でASP(VBScriptとJavaScript)とmdbファイルを使ったプログラム(チャットロボット)を作っています。 チャットプログラムでmdbファイルを読み書きする構造です。 チャットなので、複数の方が同時に発言(submit)ボタンを 押すことがよくあります。 【LAN上のそれぞれのパソコンのブラウザでチャットプログラムのURLを開いて、同時に発言ボタンを押した場合です。】 このとき、一つのmdbファイルを同時に(同じタイミングで)呼ぶ場合、下記のようなエラーが出ます。 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver] '(データベースファイル名)' は既に使用されているので、使用できませんでした。 ASPでトランザクション処理をしていますのでデータ(ログ・発言時刻・辞書ファイル等)の損失は無いと思います。 しかし、エラーメッセージがでて、チャットが中断してしまうので、困っています。 同じmdbファイルをアクセスする場合に、このようなエラー メッセージを出さないようにすることはできますか?

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

  • ベストアンサー
  • mudpuppy
  • ベストアンサー率51% (48/94)
回答No.1

Microsoftのサポートページには、このエラーの原因は次のようにかかれていました: データベースを複数のユーザーに対して正しくロックできません。 解決方法は: IUSR_<machinename> のアカウントの権限を変更し、ASPのファイルとDBがあるフォルダにフル権限をあたえる ということでした。 このサポートページを参考URLに記入しましたので、ごらんになってください。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;174943
quick-nono
質問者

お礼

mudpuppyさん、こんにちは。早速ご回答下さりありがとうございます。 >IUSR_<machinename> のアカウントの権限を変更し、ASPのファイルとDBがあるフォルダにフル権限をあたえる ASPファイル、DBファイルそれぞれのあるフォルダのWeb共有タグで読み取りと書き込みの権限を与えました 各フォルダのプロパティ>共有タグで(machinename)_IUSR<mashinename>を追加してフルアクセスにしました。 各ファイルもすべてプロパティ>セキュリティタグで、インターネットゲストアカウント(machinename)_IUSR_(machinename)の項目を追加してフルアクセスにしました。しかし、エラーは出るようです。 サポートページを見たのですが、具体的な変更点や対策について、よく理解できません。 よろしくお願いします。

その他の回答 (2)

  • mudpuppy
  • ベストアンサー率51% (48/94)
回答No.3

Great!!

  • mudpuppy
  • ベストアンサー率51% (48/94)
回答No.2

この問題が、アクセス権限の問題かどうかを確認する必要があります。 トラブルシューティングとして、IUSR_<machinename>を、サーバの管理者グループに入れてみてください。 もし、これをすることによって問題が解決するならば、これはアクセス権限の問題です。 もし解決しないならば、別の解決方法を考える必要がありますね。 トラブルシューティングが終わったら、管理者グループからはずしてください。 --I hope this fixes it.

quick-nono
質問者

お礼

スタートメニュー>コントロールパネル>管理ツール>コンピュータの管理>ローカルユーザーとグループで、 ユーザーの項目にはすでにIUSR_<マシンネーム>はありました。 しかしグループの項目にはありません。 新規でIUSR_<マシンネーム>を追加しようとすると、 ユーザーまたはグループの選択を選ぶようなダイアログが開きます。ここには何を入れればいいのでしょうか? 昨日WINDOWS2000をインストールしたばかりでよくわかりません。よろしくお願いします。

quick-nono
質問者

補足

mudpuppyさん、エラーが直りました。 IISのInetpubフォルダのプロパティ>セキュリティタグで IUSR<マシンネーム>を追加したら、その内部のフォルダやファイルまで自動的に追加されましたので、その状態で LAN上の2台のパソコンのブラウザで同時に送信ボタンを押しました。いろいろなタイミング(すこしずらしたり、完全に同時に押したり)しましたが、まったくエラーは出なくなりました。ありがとうございました。

関連するQ&A

  • ASP(海外)サーバでMDBファイルのパスを設定するには?

    brinksterというASPサーバを使用しています。 MS ACCESS Databaseもサポートしているのですが、 PWSのODBCマネージャに相当する部分がありません。 ASPファイルを実行すると、『プログラムで指定したMDBファイルが見つかりません』というエラーが出ます。 Database Managerというページが、あるにはあるのですが、ACCESS DB Passwordや、SQL Queryを書き込むように求められます。SQL Queryとは何ですか?何を書けばよいのでしょうか? ちなみに、実行させたASPファイルは、私の自宅のPWSでは、問題無く動作するのですが…。

  • Access98で作ったmdbをAccess2000で変換したらエラー発生

    こちらのFREEの掲示板を使いながらASPを勉強しているところですが、 Access98で作ったmdbをAccess2000のデータベースユーティリティで 変換したところ、下記のようにODBC Drivers エラーが発生しました。 Access2000で作成したmdbを使用する場合にはODBC Driverもバージョン アップしなければならないのでしょうか?対処方法についてもご指導 をお願いしたいと思っています。 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver]一般エラー レジストリ キー 'Temporary (volatile) Jet DSN for process 0x5b8 Thread 0x66c DBC 0x2091ba4 Jet' を開くことができません。

  • ODBCエラー「admin」によってロックされている...

    ウィンドウズ2000、OfficeXPのMS ACCESSを使用しています。LAN上の2台のパソコンから、同じホームページアドレスページを同時に閲覧する場合に次のようなエラーが表示されます。 このページはASPファイルであり、内部スクリプトから、同じmdbファイルを読み書きしています。 MicroSoft OLE Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver]マシン'コンピュータ名'のユーザー 'admin'によってロックされているので、更新できませんでした。 adminという名前でサーバーにログインして、mdbファイルを'ロック'した覚えはないのですが…。 また、adminという名前およびパスワードでログインしてみたのですが、できませんでした。 ホームページのフォルダおよびファイルのセキュリティ項目には IUSR_<コンピュータ名>を追加してあり、ASPとmdbファイルの格納されているフォルダおよびファイルにはフルアクセスの権限を持たせています。 一ヶ月ほど前にテストしたときは、LAN上のパソコンから同時に同じページ、同じmdbファイルにアクセスしても、このエラーは表示されませんでした。 特にセキュリティの設定を変更したりはしていませんので 原因がわかりません。 よろしくお願いします。

  • mdbを直接開いてもasp側に影響を与えない方法について

    お世話になります。当方、Windows Server 2003 R2 SP1 で IIS6.0 を使用しています。 サーバ側に設置しているmdbファイルをODBCでシステムDSNに登録し、ASPから 接続しております。 メンテナンスなどで直接mdbファイルを開いている時に、ASPのページに アクセスすると以下のエラーメッセージが出て正常表示が出来なくなります。 ======================================================== HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス -------------------------------------------------------- エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] '(不明)' は既に使用されているので、使用できませんでした。 ======================================================== mdbファイルを直接開いても、ASP側でもエラー表示されないように するにはどうしたらよいでしょうか? ソースは以下のようにしております。 Set cnn=Server.CreateObject("ADODB.Connection") cnn.open "dummy" cnn.close cnn.open "testdb"  '// ODBCをtestdbにしています。 SQL = "SELECT * FROM M_USER ORDER BY USERID" Set rs1 = cnn.Execute(SQL) よろしくお願いいたします。

  • ASPからACCESSのOPENどうしても出来ません

    みなさんこんにちわ。 ASPを使用してweb上でローカルのACCESSデータベースを参照したいのですが、 エラーが出て、ページを開くことが出来ません。 動作環境は WINDOWS2000SP2 OFFICE2000SP2 MDAC2.5SP2 JET4.0 SP3 ODBCドライバのバージョン(Microsoft Access Driver) 4.00.6019.00 サンプルを参考に作成しました。DBをOPENするところのコードは openStr = "driver={Microsoft Access Driver (*.mdb)};" & _ "dbq=" & Server.MapPath("critters.mdb") Set cn = Server.CreateObject("ADODB.Connection") cn.Open openStr と書きました。 しかし、IISよりこのASPファイルを参照すると以下のエラーが出ます。 HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver]一般エラー レジ ストリ キー 'Temporary (volatile) Jet DSN for process 0x518 Thread 0x5ec DBC 0x2710064 Jet' を開くことができません。 どうもOPENするところで発生しているようなのです。 なにか、バージョンが古いのでしょうか。 NET8 ASSISTANTの環境は関係あるのでしょうか。 原因と思われるところがありましたら、どうか教えていただけないでしょうか。

  • ASPについて

    ASPの参考書をみながらサンプル通りに プログラムを入力し、PWSで実行したら以下のようなメッセージがでてきてしまいました。 また、いくつかのファイルをつくり関連付けようとしても どのファイルにも以下のメッセージが出てきてしまい 関連付けれません。何が原因なんでしょうか。教えてください。 [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。

  • ASPによる アクセス2000のデータベース更新について

    アクセス2000で作成したデータベースに ASPでデータベースを更新しようとしたのですが、エラーとなって更新できずにいます。 (アクセスデータベース内容) ID F1 F2 1 TEST1 TEST2 2 1 2 3 4 5 4 23 ※ID の 5  に 23 を登録したい。 (ASP内容) <% ' データベースへの接続を開始 Set cn = Server.CreateObject("ADODB.Connection") cn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & _ "DBQ=" & Server.Mappath("TESTdb1.mdb") cn.Execute"INSERT INTO TTT(ID,F1) VALUES(5,23);" %> (エラー内容) エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。 /SQL-TEST/ncsch1.asp, line 7 アクセスの追加クエリで、INSERT INTO TTT(ID,F1) VALUES(5,23); を 実行したら、問題無く 5 23 が登録できましたので、データベース自体に他からの実行の場合、更新出来ないような 設定になっていると思うのですが、対処方法がわかりません。 どうすればよいか教えて頂けないでしょうか?

  • ASPで,mdbファイルへのinsert文のエラー

    ASPで,guestbook.mdbファイルへ接続,はOK, そしてinsert文で新規レコードを追加しようとすると エラーが出てしまいます。 select文は使えるのですが。 エラーの内容は, エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。 /asp_server/toda/guestbook.asp, line 24 です。 dbへの接続方法は, '***** データベース(guestbook.mdb)に接続 ***** Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _ Server.Mappath("guestbook.mdb") です。 問題は, '***** 名前とメッセージが空白でないときはデータ追加SQLを実行 ***** StrSQL = "insert into T_Message (name, word, entrydate) " & _ "values ('" & name & "','" & word & "',#" & entrydate & "#)" ObjConn.Execute(StrSQL) ここの,ObjConn.Execute(StrSQL)でエラーが起こります。 なぜエラーが出るのでしょうか。原因と対処方法をおしえていただけませんでしょうか? 「更新可能なクエリであることが必要です。」というエラーなので何かの設定の問題でしょうか?

  • ネットワーク上のDBにアクセス時にエラー

    VB6.0 + Access2003を使用しています。 ネットワーク上にMDBがあり、複数の端末からアクセスしています。 MDBにはADO接続で、共有モードで開いています。 複数の端末から同時にOpenし、同じテーブルにアクセス(Select文実行) した場合に、 エラー番号:-2147467259 内容:Microsoft JET Database Engineでエラーが発生しました。     データベース"を開くことができません。アプリケーションで認識できない    データベースであるか、またはファイルが破損しています というエラーが発生します。(ファイルは破損していません) 3、4台で同時アクセスを何度が試していますが、 毎回このエラーが出ることはなく、エラーが出る原因がわかりません。 原因、対処方法などわかりましたら教えてください。 よろしくお願いします。

  • aspのファイルからAccessを参照させるとエラーが出たり出なかったり

    WinXP Proに IISを使って ASPのファイルから ACCESSのDBを表示させたいのですが、 ******************************** Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 ******************************** と言うエラーメッセージが出てしまいます。 昨日までは普通に表示していたのです。 ソース ******************************* <% Dim Rs Set Rs=Server.CreateObject("ADODB.Recordset") Rs.open"SELECT * FROM TABLES ", "DSN=yihua" Response.Write Rs("NAME") Rs.close set Rs=Nothing %> ******************************* です。 更にこの見えていたファイルをコピーしてリネームして別の名前でaspファイルとして保存しても 同じエラーメッセージがでてしまいます。 何が原因なのでしょうか? 見えたり見えなかったりするのが、理解できなく 苦しんでいます。 ASP勉強中でかなり初心者です。 よろしくお願いします。