我有一个SSIS包(在BIDS 2008中创建)。该包具有数据流任务。在数据流任务中,我有一个ADO NET Source和一个Excel Destination。
我连接到Oracle DB,运行查询,然后将结果放到另一台服务器上的excel文件中。为了连接到Oracle DB,我需要为我的连接创建系统DSN。对于excel连接,我使用"表或视图"下拉选项并创建一个create table查询,该查询从ADO NET连接中的sql查询中获取输出。
现在,如果我将excel文件放在我的本地驱动器上,它可以正常工作。但最终目标是将此程序包放到不同的服务器上。因此,当我将excel连接上的位置更改为其他服务器(我有权访问)时,它无法正常工作。当我打开excel任务并点击预览时,我收到以下错误 -
数据流任务错误[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到另一台服务器?
答案 0 :(得分:2)
是否通过映射驱动器将本地计算机或远程驱动器中的本地驱动器中的excel文件中的数据填充到服务器。带有名为“Excel_Destination”的引用表的excel文件应存在于该位置,以便SSIS包将数据写入该文件。
在本地驱动器上写入文件的方法然后通过ftp或批处理脚本分发它,复制此文件在您的情况下看起来没问题。您可以在本地驱动器上写两个包一个写excel文件,另一个包可以从/向本地驱动器推送或拉出文件,可以安排。