C# SSIS对象模型-64位计算机上的Excel连接管理器错误

C# SSIS对象模型-64位计算机上的Excel连接管理器错误,c#,.net,sql-server-2005,ssis,32bit-64bit,C#,.net,Sql Server 2005,Ssis,32bit 64bit,我有一个SSIS包,它读取Excel文件(数据流源),并使用OLEDB目标数据流项将数据传输到SQL Server。此包由.Net应用程序使用SSIS对象模型执行。存储在应用程序子文件夹中的文件系统中的包 该软件包在我的开发/测试机器上运行良好。这两台机器都有Win32 32位。SSIS是在32位环境中构建的 当我在具有win2k3 x64标准版的生产机器上部署此应用程序时,我得到了错误 发生OLE DB错误。错误代码:0x80040154。OLE DB记录可用。来源:“Microsoft OL

我有一个SSIS包,它读取Excel文件(数据流源),并使用OLEDB目标数据流项将数据传输到SQL Server。此包由.Net应用程序使用SSIS对象模型执行。存储在应用程序子文件夹中的文件系统中的包

该软件包在我的开发/测试机器上运行良好。这两台机器都有Win32 32位。SSIS是在32位环境中构建的

当我在具有win2k3 x64标准版的生产机器上部署此应用程序时,我得到了错误

发生OLE DB错误。错误代码:0x80040154。OLE DB记录可用。来源:“Microsoft OLE DB服务组件”Hresult:0x80040154说明:“类未注册”。 对连接管理器“Excel连接管理器”的AcquireConnection方法调用失败,错误代码为0xC0202009。 组件“Excel源”(630)验证失败,返回错误代码0xC020801C

我在其他帖子中读到,设置项目的Run64BitRuntime属性(在设计时)可以解决从投标中运行它时的问题

如何通过SSIS对象模型设置此属性

下面是执行包的代码部分

_application = New Application() _package = New Package() _package = _application.LoadPackage(packageName, Nothing) _updateResult = _package.Execute() _应用程序=新应用程序() _包=新包() _package=\u application.LoadPackage(packageName,Nothing) _updateResult=_package.Execute() 谢谢


Masood

Run64BitRuntime属性仅适用于BIDS内部的打包运行。在BIDS之外运行时,无需设置此属性


我相信您的问题是,在代码中运行时,包是以64位模式执行的,但是Excel不支持这一点。为了实现这一点,您需要推出32位版本的DTExec。

谢谢您,欧文。但我在这里有点不知所措,因为我不是通过命令行执行包,而是通过包类的Execute方法调用包。有没有办法强制类在32位环境中运行。或者我必须重写代码才能使用命令行执行包?。但这是我试图避免的事情,因为很难获得有关包进度的信息。我将不得不依靠SSIS日志来实现这一点。有什么帮助吗?ThanksI相信,当连接到仅支持32位连接的提供程序时,您别无选择,只能使用命令行实用程序并从日志中检索数据。有关更多信息,请参阅此链接。