找不到adodb.com对象

本文关键字:对象 com adodb 找不到 | 更新日期: 2023-09-27 18:02:49

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

错误:无法强制转换类型为'ADODB '的COM对象。流类'到接口类型'ADODB._Stream'。此操作失败,原因是对IID为'{00001565-0000-0010-8000-00AA006D2EA4}'的接口的COM组件的QueryInterface调用失败,原因是以下错误:No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).,

找不到adodb.com对象

在Windows Server 2008 R2 SP1中,adocom接口发生了变化。因此,在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)。在微软论坛中有一个讨论这个问题和发布更新的帖子:

  • Windows 7 Service Pack 1中MDAC adodbcom组件的突破性变化

UPDATE:与此同时,微软已经发布了这个问题的修复程序。如果您在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,但也许它可以工作…

如果你确定服务器上没有adodbcom对象,那么你需要安装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对象