2

我在我的 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)) .,

4

2 回答 2

4

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

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

该文章还包含一些解决方法,特别是它链接到可用于在开发机器上编译的“兼容性类型库”。

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


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

于 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 回答