2

Windows 2008 R2 Standard 64bit で開発された C# アプリケーションで ADODB COM オブジェクトを使用しています。Windows 2008 Standard 64bit (R2 ではない) の製品サーバーにアプリケーションを移動したところ、以下のエラーが発生しました。MDAC 2.8 が製品マシンにインストールされていないようです。Windows 2008 マシンに MDAC 2.8 をインストールする方法の参照が見つかりません。誰かが私を正しい方向に向けることができますか?

エラー: タイプ 'ADODB.StreamClass' の COM オブジェクトをインターフェイス タイプ 'ADODB._Stream' にキャストできません。IID '{00001565-0000-0010-8000-00AA006D2EA4}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーにより失敗したため、この操作は失敗しました: No such interface supported (HRESULT からの例外: 0x80004002 (E_NOINTERFACE)) 、

4

2 に答える 2

4

Windows Server 2008 R2 SP1 では、ADO COM インターフェイスが変更されました。その結果、Windows 7 SP1 または Server 2008 R2 SP1 を搭載したシステムでコンパイルされた ADO アプリケーションは、古いオペレーティング システム(R2 以外の Server 2008 など)では実行されません。

この問題について説明しているナレッジベースの記事へのリンクは次のとおりです (KB2517589):

この記事には、いくつかの回避策も含まれています。特に、開発マシンでのコンパイルに使用できる「互換性のある typelib」にリンクしています。

残念ながら、この問題に対する「実際の」解決策はまだありません (VBA 開発者にとっては特に苦痛であり、現時点で唯一の回避策は開発マシンで Windows 7 SP1 をアンインストールすることです)。Microsoft フォーラムには、この問題が議論され、更新が投稿されているスレッドがあります。


更新: その間、Microsoft はこの問題の修正プログラムをリリースしました。次のページ (KB 2640696) からホットフィックスを Windows 7 SP1/2008R2 SP1 開発マシンにインストールし、アプリケーションを再コンパイルすると、古いオペレーティング システムで再び動作します。

于 2011-07-19T09:44:39.017 に答える
1

おそらく、次のユーティリティを試して、実際に存在するかどうかを確認してください: MDAC ユーティリティ: コンポーネント チェッカー http://www.microsoft.com/download/en/details.aspx?id=1953 Windows Server について言及していません。 2008年ですが、おそらくうまくいきます...

そのサーバーに ADODB COM オブジェクトがないことが確実な場合は、Microsoft からもダウンロードできる MDAC2.8 コンポーネントをインストールする必要があります。

リンク: http://www.microsoft.com/download/en/details.aspx?id=5793

また、Windows Server 2008 では、フォルダー C:\Program Files\Common Files\System\adoに移動 して、そこに MDAC コンポーネントがあるかどうかを確認できます。MDAC 2.8 の場合は、msado28.tlb が必要です。これは、MS OFFice VBA プロジェクトで ADODB オブジェクトを参照するために使用できるものです。

于 2011-07-19T09:37:30.660 に答える