SSIS对象模型 - 64位机器上的Excel连接管理器错误
问题描述:
我有一个SSIS包,它读取Excel文件(数据流源)并使用OLEDB目标数据流项将数据传输到SQL Server。该包由.NET使用SSIS对象模型的应用程序。该程序包存储在应用程序子文件夹内的文件系统中。SSIS对象模型 - 64位机器上的Excel连接管理器错误
该软件包可以在我的开发/测试机器上正常工作。这些机器都有win2k3 32bit。 SSIS建立在BIDS 32位环境中。
当我DEPLOYE生产的机器上这个应用程序,它具有WIN2K3 64标准版我的错误已经发生
一个OLE DB错误。错误代码:0x80040154。 OLE DB记录可用。源:“Microsoft OLE DB服务组件”Hresult:0x80040154描述:“类未注册”。 对连接管理器“Excel连接管理器”的AcquireConnection方法调用失败,错误代码为0xC0202009。 组件“Excel源”(630)验证失败并返回错误代码0xC020801C。
我已阅读其他帖子,设置项目的Run64BitRuntime属性(在设计时),解决了从BIDS运行时的问题。
如何通过SSIS对象模型设置此属性。
下面是执行包
_application = New Application() _package = New Package() _package = _application.LoadPackage(packageName, Nothing) _updateResult = _package.Execute()
感谢
马苏德
答
的Run64BitRuntime属性只适用于包装的BIDS内部运行的代码的一部分。在BIDS外跑步时无需设置此属性。
我相信你的问题是,在代码中运行时,程序包在64位模式下执行,但是Excel不支持这一点。为了完成这项工作,您需要大胆推出32位版本的DTExec。
谢谢欧文。 但我在这里有点无知,因为我不是通过命令行执行包,而是通过Package类的Execute方法调用它。 有没有办法强制班级在32位环境下运行。 还是必须重写代码才能使用命令行执行程序包?但这是我试图避免的,因为它很难获得有关软件包进度的信息。我将不得不依赖于SSIS日志记录。 任何帮助? 谢谢 – 2010-01-07 07:15:15
我相信当连接到只支持32位连接的提供者时,你别无选择,只能使用命令行实用程序并从日志中检索数据。请参阅此链接了解更多信息。 http://msdn.microsoft.com/en-us/library/ms141766.aspx – 2010-01-07 13:57:43