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。

+0

谢谢欧文。 但我在这里有点无知,因为我不是通过命令行执行包,而是通过Package类的Execute方法调用它。 有没有办法强制班级在32位环境下运行。 还是必须重写代码才能使用命令行执行程序包?但这是我试图避免的,因为它很难获得有关软件包进度的信息。我将不得不依赖于SSIS日志记录。 任何帮助? 谢谢 – 2010-01-07 07:15:15

+0

我相信当连接到只支持32位连接的提供者时,你别无选择,只能使用命令行实用程序并从日志中检索数据。请参阅此链接了解更多信息。 http://msdn.microsoft.com/en-us/library/ms141766.aspx – 2010-01-07 13:57:43