0

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

该软件包在我的开发/测试机器上都可以正常工作。这两台机器都有 win2k3 32 位。SSIS 是在 BIDS 32 位环境中构建的。

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

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

我在其他帖子中读到设置项目的 Run64BitRuntime 属性(在设计期间)解决了从 BIDS 运行它时的问题。

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

这是执行包的部分代码

   _application = 新应用程序()
   _package = 新包()
   _package = _application.LoadPackage(packageName, Nothing)
   _updateResult = _package.Execute()

谢谢

马苏德

4

1 回答 1

2

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

我相信你的问题是在代码中运行时,包在 64 位模式下执行,但是 Excel 不支持这一点。为了完成这项工作,您需要启动 32 位版本的 DTExec。

于 2010-01-06T14:34:38.657 回答