2

我有一个 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 到另一台服务器更好?

4

1 回答 1

2

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

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

于 2013-08-14T13:55:04.460 回答