找不到ADODB COM对象

我在我的c#应用程序中使用ADODB COM对象,该应用程序是在Windows 2008 R2 Standard 64bit上开发的。 现在我已经使用Windows 2008 Standard 64bit(而不是R2)在prod服务器上移动了应用程序,现在我收到以下错误。 我的prod机器上似乎没有安装MDAC 2.8? 我找不到任何参考如何在Windows 2008机器上安装MDAC 2.8,也许有人可以指向我正确的方向?

错误:无法将“ADODB.StreamClass”类型的COM对象强制转换为接口类型“ADODB._Stream”。 此操作失败,因为由于以下错误,对IID为“{00001565-0000-0010-8000-00AA006D2EA4}”的接口的COM组件的QueryInterface调用失败:不支持此类接口(HRESULTexception:0x80004002(E_NOINTERFACE)) ,

使用Windows Server 2008 R2 SP1,ADO COM接口已更改。 因此,在具有Windows 7 SP1或Server 2008 R2 SP1的系统上编译的任何ADO应用程序都不能在较旧的操作系统 (例如Server 2008非R2)上运行。

以下是描述此问题的知识库文章的链接(KB2517589):

  • 在运行Windows 7 SP 1或Windows Server 2008 R2 SP 1或安装了KB983246的计算机上重新编译后,ADO应用程序无法在低级操作系统上运行

本文还包含一些解决方法,特别是它链接到“兼容性类型库”,您可以使用它来编译您的开发机器。

不幸的是,对于这个问题还没有“真正的”解决方案(这对VBA开发人员来说尤其痛苦,因为目前唯一的解决方法是在开发机器上卸载Windows 7 SP1)。 Microsoft论坛中有一个讨论此问题的post以及发布更新的位置:

  • 在Windows 7 Service Pack 1中打破MDAC ADODB COM组件的更改

更新 :与此同时,微软已发布此问题的修复程序。 如果在Windows 7 SP1 / 2008R2 SP1开发计算机上安装以下页面(KB 2640696)中的修补程序并重新编译应用程序,它将在旧操作系统上再次运行:

  • 在Windows 7 SP1或Windows Server 2008 R2 SP1中编译的基于ADO的应用程序不能在早期版本的Windows中运行

也许您可以尝试以下实用程序来确定它是否真的存在: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对象。