アクセスは、レジストリのキーワードエラー処理方法を開くことができません(80004005エラー)。
エラーメッセージは以下の通りです。
----------------------------------
Microsoft OLE DB Provider for ODBC Drivers エラー '''80004005 '''です。
[Microsoft][ODBC Microsoft Access Driver] 共通エラー レジストリキーワード '''Temporary (volatile) Jet DSN for process 0x728 Thread 0x854 DBC 0x276fb44 Jet''' を開くことができない。
----------------------------------
考えられる原因としては、以下のようなものがあります。
1. マイクロソフトはODBCの更新を停止しており、ACCESSデータベースファイルへのJET接続に切り替える必要があります。
2.システムディレクトリのパーミッションが変更されたこと。
また、古い書き込みによると、ACCESSのデータベースファイルがACCESS97のバージョンであることが原因とのことですが、これは考慮する必要がなく、私はACCESS2000のデータベースを使用しています。
1つ目の理由ですが、元の接続文字列は以下の通りです。
--ODBC接続方法 ------------------------
mdbpath=server.MapPath("my.mdb.asp")です。
CnnStr = "DBQ=" & mdbpath & ";DRIVER={Microsoft Access Driver (*.mdb)};uid=admin;pwd="
-------------------------------------
JET接続に変更した後の接続文字列は
--- JET 接続方法 ----------------------
CnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;User Id=admin;データソース="& mdbpath &" ''';Password=luntanbbs";
-------------------------------------
プロンプトのエラーメッセージは少し違いますが、テストして無効でした:。
----------------------------------
Microsoft JET Database Engine エラー '''80004005 '''です。未指定のエラー
----------------------------------
最後に、2つ目の理由である「システムディレクトリのパーミッションが不十分であること」を確認します。聞いてみると、セキュリティ上の理由から、同僚がサーバーのWINNTディレクトリをAdministrators、system "full control"、users read-onlyに設定したことが判明したのです。
winntsystem32ディレクトリにあるodbcで始まる全てのDLLファイルに"execute"権限を付与したところ、同じエラーメッセージが表示されました。その後、system32ディレクトリ全体を誰でも実行できるように設定しただけですが、テストしてもまだうまくいきません。
ODBCやJETから呼び出されるが、このsystem32ディレクトリになく、失敗するほどの権限を持たないファイルが他にあるのでしょうか?
そんなことを考えながら、ちらっとwinnttempディレクトリを覗いてみました。そうだ、temp ディレクトリを誰でも "書き込み可能" に設定して、何が起こるか見てみよう。
テスト、ねぇ、うまくいった。ODBC接続を使ったプログラムは、ACCESSデータベースのレコードを正常に読み込んで更新している。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
AccessでMicrosoft JET Database Engine (0x80004005) not specifiedエラーを解決する。
-
AccessでSQL文を使ってテーブルの存在を確認するコツ
-
ACCESSデータベースは、ゼロのメソッドを共有するために自動番号のID値を変更するには
-
Accessのデータ接続時にC#が常にdbo.mdbが見つからないと報告する問題
-
Accessに「検索キーワードに該当するレコードがすべて見つかりません」というエラーが表示される 解決方法
-
IPに基づきユーザーの都市にジャンプする手順
-
ACCESSのパラメータ付きクエリ、VBSCRIPT(ASP)およびC#(ASP.NET)関数付き
-
Access 2000、Access 2002、Access 2003のデータベースから削除されたテーブルを復元する方法
-
バックグラウンドのストアドプロシージャを呼び出すACCESSの実装方法
-
INNER JOIN構文で複数のテーブルを結合してレコードセットを作成する