【问题标题】:SSIS 2008 Excel Destination Connection error - 0x80040E37SSIS 2008 Excel 目标连接错误 - 0x80040E37
【发布时间】:2013-08-14 13:28:57
【问题描述】:

我有一个 SSIS 包(在 BIDS 2008 中创建)。该包有一个数据流任务。在数据流任务中,我有一个 ADO NET Source 和一个 Excel Destination。

我正在连接到 Oracle 数据库,运行查询,然后将结果放入不同服务器上的 excel 文件中。为了连接到 Oracle DB,我需要为我的连接创建一个系统 DSN。对于 excel 连接,我使用“表或视图”下拉选项并创建一个创建表查询,该查询从 ADO NET 连接中的 sql 查询中获取输出。

现在,如果我将 excel 文件放到本地驱动器上,它可以正常工作。但最终目标是将这个包放到不同的服务器上。因此,当我将 excel 连接上的位置更改为不同的服务器(我可以访问)时,它不起作用。当我打开 excel 任务并点击预览时,我收到以下错误-

标题:Microsoft Visual Studio

数据流任务 [Excel 目标 [16]] 出错:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E37。

数据流任务 [Excel 目标 [16]] 出错:打开“Excel_Destination”的行集失败。检查对象是否存在于数据库中。


附加信息:

来自 HRESULT 的异常:0xC02020E8 (Microsoft.SqlServer.DTSPipelineWrap)


按钮:

好的

我找不到任何解决此问题的方法。现在 ADO NET 连接仍然有效,如果我在查询 ADO NET 源任务时点击预览,我仍然可以获得所需的数据。

是否需要将 DSN 名称添加到要删除 excel 文件的服务器?还是将文件放到本地机器上,然后将文件 ftp 到另一台服务器更好?

【问题讨论】:

    标签: oracle ssis database-connection bids


    【解决方案1】:

    您是在本地机器的本地驱动器或远程驱动器中通过映射驱动器将数据填充到服务器的excel文件中。带有名为“Excel_Destination”的引用表的 excel 文件应该存在于该位置,以便 SSIS 包将数据写入该文件。

    在本地驱动器上写入文件然后通过复制此文件的 ftp 或批处理脚本分发它的方法在您的情况下看起来不错。您可以编写两个包,一个在本地驱动器上写入 excel 文件,另一个包将文件从/拉到本地驱动器,可以安排。

    【讨论】:

    • 好的。这是由于 SIS 创建 excel 文件的进展吗?当我删除一个文本文件时,我将它放到另一台服务器上没有问题。
    • 不,不是,使用名为“Excel_Destination”的引用表填充现有空 Excel 文件中的数据应该以类似的方式工作。
    • 我发现了问题。虽然它显示“Excel_Destination 表/视图”作为选择,但我需要在打开 Excel 任务时重新创建表。一旦我这样做,它就会正常工作。感谢您的帮助。