• ベストアンサー
  • すぐに回答を!

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) よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数598
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • redfox63
  • ベストアンサー率71% (1325/1856)

エラートラップを仕掛けておいて回避するといった方向でしょう On Error Resume Next Set cnn=Server.CreateObject("ADODB.Connection") On Error Goto 0 if not cnn is nothing then   cnn.open "dummy"   cnn.close   cnn.open "testdb"  '// ODBCをtestdbにしています。   SQL = "SELECT * FROM M_USER ORDER BY USERID"   On Error Resume Next   Set rs1 = cnn.Execute(SQL)   On Error Goto 0   if not rs1 is nothing then     ' 正常に読み込めた場合の処理   else     ' 何かのエラーが起きた場合   end if else   ' 何かのエラーが起きた場合 end if といった具合に トラップを仕掛ける範囲を限定して対処してみましょう cnn.Open でエラーになっているなら on error resume next cnn.Open "testdb" if err.number<>0 then   ' Open失敗時の処理 end if on error goto 0 といった具合かと

共感・感謝の気持ちを伝えよう!

質問者からのお礼

redfox63様、ご回答ありがとうございます。 エラートラップでエラー表示そのものは回避できるかと思いますが、 今回は、asp側でのエラーの根本的な解決をしたいと考えております。 曖昧な情報で申し訳ないのですが、現在のサーバにリプレイスする前は 直接mdbファイルを開いていても、asp側でも正常にOpen出来ていたため、 排他で開かない設定方法があるのではないかと思い、ご相談した次第です。 リプレイス前と現在はプログラムソースは変更ありませんので、 ODBCの設定で何かあるのかと思ったのですが…。

質問者からの補足

エラーの件、自己解決しましたのでご報告いたします。 mdbファイルを設置しているディレクトリのアクセス権限が ないことによる現象だったようです。 テスト的に、Usersにフルコントロールを設定したところ、 直接mdbファイルを開いていても、asp側で問題なくOpenできました。 #ただ、直接mdbファイルを開いていない時は問題なくasp側でOpenが  出来ていて、なぜUsersに権限がないと直接開いている時にエラーに  なるのかはよくわからないままです…。 今回はたまたま解決できましたが、いつ原因不明のエラーと出くわすか わからないので、redfox63様のご回答どおり、エラートラップも ちゃんと対応していきたいと思います。 この度は本当にありがとうございました。

関連するQ&A

  • IIS7.0 と ASP を使ってMDBファイルを参照したい

    みなさんこんばんわ。 IIS7.0 と ASP を使ってMDBファイルを参照したいのですが、 エラーが出て、ページを開くことが出来ません。 エラー表示は HTTP500内部サーバーエラー と表示されます。 エラーでとまる部分は以下コードの Point002 と Point003 の間です。 Response.Write "<p>Point001" Set Objconn = Server.CreateObject("ADODB.Connection") Response.Write "<p>Point002" Objconn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath(DB_Pass) Response.Write "<p>Point003" StrSQL="select * from " & Table_Name Set Objrs = Server.CreateObject("ADODB.Recordset") Response.Write "<p>Point004" Objrs.Open StrSQL, ObjConn Response.Write "<p>Point005" ODBC を使う方法もあるようですが今回は ODBC を使わないでMDBファイルを参照したいのです。 よろしくお願いします。 環境 OS→Windows Vista Ultimate Access→Access2000 IIS→IIS7.0 使用言語→VBScript

  • 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)でエラーが起こります。 なぜエラーが出るのでしょうか。原因と対処方法をおしえていただけませんでしょうか? 「更新可能なクエリであることが必要です。」というエラーなので何かの設定の問題でしょうか?

  • MDBへの接続方法

    ASPからMDBへの接続の仕方がわかりません。 以前の質問と同じ内容のものを探していましたら、 以下のような解答があったのを見つけました。 しかし、ちょっと私には理解できず・・・。 >まず、ODBC設定でシステムDSNを設定します。 このときにmdbファイルの場所も設定します。 [データベース]という枠に中に[選択]というボタンがあるはずなので、ここで、mdbファイルを設定する必要があります。 ODBC設定でファイルを指定しておくことがポイントです。 次に <% Set conn = Server.CreateObject("ADODB.Connection") conn.open "MYDSN" %> と書けばつながります。 ここの「MYDSN」はODBC設定で指定したデータソース名です。 下手にMapPath等を使わずにまず、初歩から始めましょう。 ODBC設定というのはどこでやるのでしょうか?

  • 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の環境は関係あるのでしょうか。 原因と思われるところがありましたら、どうか教えていただけないでしょうか。

  • Win10(IIS) ASPでMDBをアクセス不可

    とても困っております。お願いします。 Windows7 Pro 32ビットでIISを有効にし、稼働していたASPを Windows10 Pro (OS:1903)64ビットに移行したところ、mdbへの接続でエラーになりました。 Microsoft Officeですが、 Windows7は、Office Professional Plus 2010(32ビット) Windows10は、Office Professional Plus 2016(64ビット)です。 Const strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\inetpub\wwwroot\nwgp\MDB\term.mdb" Set cnn = Server.CreateObject("ADODB.Connection") cnn.Open strConn  ←ここでエラー発生 この場合、on error resume next を入れても、「Webサイトはページを表示できません」と表示されます。 OLEDB.12をOLEDB.16に変更しても同じです。 mdbをaccdbに変換して、terma.ccdbに変えても同じでした。 Const strConn = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\inetpub\wwwroot\nwgp\MDB\term.mdb" にすると、「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」 というエラーが、err.descriptionで表示されます。 フォルダやファイルのアクセス権は、IIS_USERSもeveryoneもフルアクセスにしてあります。

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

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

  • IIS7でIIS6で動いていたASPアプリを動かしたい

    初めまして、santa51と申します 表題の通り、IIS7でASPアプリを動かしたいのですが、 動きません。 xpのIIS6では動いていました エラーの内容は Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver] ディスクまたはネットワークのエラーです。 /????/?????/login.asp, 行 109 となります 109行は 107 DBName="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("../cgi-bin/mydb/" & campany & "/master.mdb") 108 Set db=Server.CreateObject("ADODB.Connection") 109 db.Open DBName です。 確認がとれていることは 1.Server.Mappath("../cgi-bin/mydb/" & campany & "/master.mdb")は確実にあっています。 環境は vista business IIS7 access2003 です。 以上、よろしくお願いします santa51

  • ASP + MDBで発生したエラーが解決できません。。。

    こんにちは。 いま、ローカルPCでシステム開発をしています。 環境としては、  WindowsXP + IIS + ASP + MDB(ACCESS2003) です。 いま、MDBにDB接続して、データを取得しようとしているのですが、以下のエラーが発生していて、治りません。 【エラータイプ】 Microsoft VBScript 実行時エラー (0x800A01B6) オブジェクトでサポートされていないプロパティまたはメソッドです。:Open ソースコードは以下の通りです。 【ソース】 'コネクションオブジェクト Set objCon = Server.CreateObject("ADODB.Connection") objCon.Provider = "Microsoft.Jet.OLEDB.4.0" objCon.ConnectionString = "C:\test.mdb" objCon.Open 'レコードセットオブジェクト objRs = Server.CreateObject("ADODB.Recordset") objRs.Open strSQL, objCon, 3 上記のobjRs.Open→Set objRs = objCon.Executeに変更するとエラーは発生しないのですが、RecordCountなどのプロパティが利用できません。 色々と調査したのですが、全くわかりません。 どなたか情報をご存知でしたら、ぜひともご教示ください。 宜しくお願いします。

  • ASP AccessDBオープン出来ない

    お世話になります。 サーバー:WindowsServer2003 R2 SE DB:Access2003 WindowsServer2003にASPを配置し、同じくWindowsServer2003にAccess2003を配置し、 ASPからAccessをオープンする時にエラーが出ます。 ODBC設定パターンと、Jetパターン両方等ダメです。 IISはもちろん設定しており、権限も問題無いと思われ、MicrosoftサポートでもTEMPのアクセス権限どうのこうのとありましたが、問題なさそうです。 サイトを探しまくって、分からない為、ご質問させて頂きまた。 有識者の方々、ご享受宜しくお願い申し上げます。 【ソース1】 Set gCon = Server.CreateObject("ADODB.Connection") gCon.Open "TEST" ※TESTはODBC名です。Accessを指定しております。Accessにはパスワードも何もありません。 【Webページ結果】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 【ソース2】 Set adoCon = Server.CreateObject("ADODB.Connection") adoCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("TEST.mdb") adoCon.Open ※パスはあってます。 【Webページ結果】 Microsoft JET Database Engine エラー '80004005' エラーを特定できません -------- ローカルでASP、Accessを実行すると、問題なくオープン出来ます。 WindowsServer2003が問題なのでしょうか?

  • LAN上のMDBをIIS(ASP)から開く

    DMZであるWEBサーバー(IIS4.0)からLAN上のMDBファイルを操作したいのですが・・・。うまくいきません。 ネットワークドライブでWEBサーバー側に登録して ADODB.Connectionで直接、またはODBC介してでやろうとしましたが駄目でした。 IIS側でODBCの登録自体はうまくいっているのか(?)MDBの最適化はODBCの画面から行えます。 IIS越しでASPからデータベースを開こうとすると [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 権限の問題なのでしょうか? LAN側のファイルもフォルダもeveryoneフルコントロールに してあります。(怖いけど(笑)) 同様のケースで過去に解決された方、または良い案がある方。ご教授下さい。