ASPからMDB(Access2000)に、以下のように接続しています。
Set objCon = Server.CreateObject("ADODB.Connection")
Set myRst = Server.CreateObject("ADODB.Recordset")
objCon.Provider = "Microsoft.Jet.OLEDB.4.0"
objCon.ConnectionString = "C:\mdb\db.mdb"
objCon.Open
これまで問題なく接続できておりましたが、
未適用だったパッチ類をWindowsUpdateにてまとめて適用したところ、
objCon.Openのところで、
Microsoft JET Database Engine
エラー '80004005'
エラーを特定できません
というエラーが発生するようになってしまいました。
どのパッチの影響なのか分からなかった為、
試しに古いMDAC(2.7)を適用し、
OSを再起動させたところ、接続できるようになりましたが、
これが正しい対応方法とは思えません。
どのパッチの影響なのか、
またこの場合はどのように対応すればよいのか、
ご存じの方がいらっしゃいましたら、教えてください。
具体的にどのパッチが当たったのか、まずは確認することから始めたほうが良いと思います。
WindowsUpdateの適用履歴から探ってみてください。
その中にはMDAC関連のアップデートが入っていると思いますので、正しいパッチ番号を提示してみれば、解決が早くなると思います。
さて、問題の80004005は、ADOのエラーで「プロバイダが見つかりません」というエラーです。(ASPだと、ADOのエラーは単純なerr.descriptionでは表示されないと思います)
http://support.microsoft.com/?scid=kb;ja;306345&spid=1596&si...
つまり、JET4.0プロバイダが見つからないという状態なわけです。
MDACは、2.6以降で既にJET4.0のサポートを打ち切っているようです。ですので、MDACの最新版を適用するだけでは、JET4.0がどうなるかサポートされていないようです。
http://support.microsoft.com/?scid=kb;ja;416675&spid=1596&si...
結局のところ、MDACとは別にJET4.0エンジンをインストールするのが解になると思います。JET4.0の最新版の入手は、下記のページを参考にしてください。
http://support.microsoft.com/default.aspx?scid=kb;JA;239114
サーバ上のMDACの状態は、下記のソフトで確認できます。
http://www.vector.co.jp/soft/win95/util/se285909.html
私もMDACのバージョンには昔から悩まされてきました... ご健闘をお祈りしております。
ご回答ありがとうございます。
リンク先を見させて頂きましたが、
ちょっと違うみたいです。
(この修正が出る以前から不具合が出ていました。)
ご回答ありがとうございます。
説明が不足しておりましたが、
最初に問題なく接続できていた時点の環境では、
JET4.0(SP8)とMDAC2.8(SP1)を導入済みでした。
その後どのパッチが原因かいろいろ探ってみましたが、
どうも特定のパッチに限られないようで、
何かしらのパッチを適用後に再起動すると、
この状態になるみたいです。
(たとえば、「Microsoft Windowsインストーラ 3.1」だけ適用後でも同じでした。)
とりあえずWindows Update後は、MDAC(前回適用したのが2.7なら2.8、2.8なら2.7)を再適用し、もう一度再起動すれば接続できるようになるみたいですので、
当面はそれで回避し、もう少し調べてみたいと思います。