【发布时间】:2013-04-05 20:10:07
【问题描述】:
我正在尝试将表从 SQL SERVER 2012 导出到 Excel 2007 工作簿。
OLE DB Source -> Excel Destination 中的简单任务完美运行。
我有一个名为 [POD Assignment] 的字段,如果 [POD Assignment] 等于“UNKNOWN”,我想导出到工作簿中的一个工作表,如果不是,我想导出到另一个工作表。
将 OLE DB 源链接到条件拆分。
我有一个名为“Unknowns”的输出,其中条件是“[POD 分配] == “UNKNOWN””。 我将输出“未知”链接到 Excel 目标。
此时,当我运行包时,一切正常。这些行已正确导出到工作簿,并且计数是正确的。如此处所示:
[]http://imgur.com/iKcJCfY,rHnW8ax#0
现在我将条件拆分连接到第二个 Excel 目标,其中输出是条件拆分的默认输出。 excel 第二个目的地使用与第一个完全相同的 Excel 连接。并且所有数据都应该导出到同一工作簿中的不同工作表。
运行失败。如此处所示:
[]:http://imgur.com/iKcJCfY,rHnW8ax#1
任务因错误而过早中止。
我收到以下错误代码:
[Excel 目标 1 [101]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。来源:“Microsoft Office Access 数据库引擎”Hresult:0x80004005 描述:“无法扩展命名范围。”。
[Excel 目标 1 [101]] 错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “Excel 目标 1.Inputs[Excel 目标输入]”失败,因为发生错误代码 0xC020907B,并且“Excel 目标 1.Inputs[Excel 目标输入]”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。处理输入“Excel 目标输入”(112) 时,组件“Excel 目标 1”(101) 上的 ProcessInput 方法失败,错误代码为 0xC0209029。已识别的组件从 ProcessInput 方法返回错误。该错误是特定于组件的,但该错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 [OLE DB 源 [188]] 错误:设置缓冲区的行集结尾失败,错误代码为 0xC0047020。 [SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 OLE DB 源上的 PrimeOutput 方法返回错误代码 0xC0209017。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但是错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
任何帮助将不胜感激。这真让我抓狂。我不明白为什么使用一个目的地进行条件拆分可以完美地工作,但是当我添加第二个目的地时一切都失败了。
【问题讨论】:
-
我不确定您是否可以使用 OLE DB 同时写入同一工作簿中的两个不同工作表,可以吗?
-
这也是我的想法。重要的错误是“无法扩展命名范围”。为什么不尝试写入不同的工作表,看看它是否会停止错误,只是为了排除故障。
标签: excel ssis sql-server-data-tools