OLEDB32.DLLのバージョンが変わる?

解決


かずかず  2005-08-12 19:42:49  No: 91470  IP: [192.*.*.*]

VB6で作成したインストーラでセットアップしたところSQL Serverに接続できなくなってしまいました。調べたところOLEDB32.DLLのバージョンが変わってしまい接続できなくなったみたいで、他のフォルダにあった2.53のものを2.71にかぶせたら動作するようになりました。SETUP.LSTにもCABにもOLEDB32.DLLは含めておりません。OLEDB32.DLLに絡んだものはセットアップファイルに含んでいないのですが...。

編集 削除
魔界の仮面弁士  2005-08-12 22:19:09  No: 91471  IP: [192.*.*.*]

OLEDB32.DLL って、MDAC絡みのコンポーネントですよね。
それ自体は、いろいろな要因でインストールされますよ。(Windows Updateとか)

> 2.53のものを
http://support.microsoft.com/dllhelp/default.aspx?l=117&fid=151205

> 2.71に
http://support.microsoft.com/dllhelp/default.aspx?l=117&fid=138391


> かぶせたら動作するようになりました
システムの一部のファイルだけ、バージョンを勝手に低くしてしまうと、
他の依存ファイルとの整合性が取れなくなってしまい、いわゆる
『DLL Hell』の状態に陥ってしまう事がありますので、注意してください。

編集 削除
かずかず  2005-08-15 17:46:32  No: 91472  IP: [192.*.*.*]

魔界の仮面弁士さんご返事ありがとうございます。
原因わかりました。魔界の仮面弁士さんがおしゃる「DLL Hell」です。

インストーラにファイル「msdart.dll」の最新バージョンを含めてしまい、他の依存ファイルとの整合性が取れなくなり接続できなくなってしまいました。「oledb32.dll」を2.53に上書きして動作したのは、mdac2.5 sp3以降までは、「msdart32.dll」なので、そのPCにはmdac2.5の環境があり動作したものと思われます。実際は2.73で動作していました。インストーラにそもそも「msdart.dll」を含めたのは、Windows 2000 Serverでセットアップ時に下記メッセージが表示され、セットアップができなくファイル「msdart.dll」を含めたらセットアップできたのです。このとき一番古いバージョンの「msdart.dll」を含めるか、最新のMdacを含んだインストーラにするべきだったと思う所存です。

<メッセージ>
「プロシージャエントリポイントSetFileSecurirtyIがダイナミックリンクライブラリ  MSDART.DLLから見つかりませんでした。」

上記メッセージの対策方法をご存知でしたら誰か教えてください。

編集 削除
もげ  2005-08-16 12:28:15  No: 91473  IP: [192.*.*.*]

MDAC関連は、個々のDLLを個別に配布するのではなく、
MDAC_TYP.EXEをセットアップに含めてください。
その際、
開発環境のMDACのバージョンと参照設定しているADO等のバージョンが違うと、
ディストリビューションウィザードがMDAC_TYP.EXEをセットアップファイルに
組み込んでくれない場合があります。
その場合は、開発環境のMDACのバージョンと参照設定のバージョンをあわせてください。

編集 削除
もげ  2005-08-16 12:32:17  No: 91474  IP: [192.*.*.*]

参考過去ログ

http://madia.world.coocan.jp/vb/vb_bbs/200302_03020022.html

編集 削除
かずかず  2005-08-26 07:58:35  No: 91475  IP: [192.*.*.*]

もげさんご返事遅くなって申し訳ありません。
MDAC_TYP.EXEを含めて提供したらうまくいきました。ありがとうございました。

編集 削除