我在我的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调用失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) ,
答案 0 :(得分:4)
使用Windows Server 2008 R2 SP1,ADO COM接口已更改。因此,在具有Windows 7 SP1或Server 2008 R2 SP1 的系统上编译的任何ADO应用程序都无法在较旧的操作系统上运行(例如Server 2008非R2)。
以下是描述此问题的知识库文章的链接(KB2517589):
本文还包含一些解决方法,特别是它链接到“兼容性类型库”,您可以使用它来编译您的开发机器。
不幸的是,对于这个问题还没有“真正的”解决方案(对于VBA开发人员来说尤其痛苦,因为目前唯一的解决方法是在开发机器上卸载Windows 7 SP1)。 Microsoft论坛中有一个话题,其中讨论了此问题以及发布更新的位置:
更新:与此同时,Microsoft已针对此问题发布了修复程序。如果您在Windows 7 SP1 / 2008R2 SP1开发计算机上安装以下页面(KB 2640696)中的修补程序并重新编译应用程序,它将在旧操作系统上再次运行:
答案 1 :(得分: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对象的那个。