在SSDT中创建SSIS包。数据流任务中的条件性拆分导致包中断

时间:2013-04-05 20:10:07

标签: excel ssis sql-server-data-tools

我尝试将表从SQL SERVER 2012导出到Excel 2007工作簿。

来自OLE DB Source的简单任务 - > Excel Destination完美运行。

我有一个名为[POD Assignment]的字段,如果[POD Assignment]等于" UNKNOWN",我想导出到工作簿中的一个工作表,如果它是另一个工作表,我想导出到工作簿中的一个工作表不

将OLE DB源链接到条件性拆分。

我有一个名为"未知数"条件是" [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.输入[Excel目的地输入]"失败,因为错误代码0xC020907B发生,错误行处置" Excel目标1.输入[Excel目标输入]"指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

     

[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PROCESSINPUTFAILED。组件" Excel目标1"上的ProcessInput方法; (101)在处理输入" Excel目的地输入"时失败,错误代码为0xC0209029。 (112)。标识的组件从ProcessInput方法返回错误。该错误特定于组件,但错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。   [OLE DB Source [188]]错误:设置缓冲区的行集结束失败,错误代码为0xC0047020。   [SSIS.Pipeline]错误:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 OLE DB Source上的PrimeOutput方法返回错误代码0xC0209017。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

任何帮助将不胜感激。这真让我抓狂。我不明白为什么使用一个目的地进行条件分割是完美的,但是当我添加第二个目的地时,一切都失败了。

4 个答案:

答案 0 :(得分:3)

我有这个确切的错误消息。我尝试了其他答案的建议,没有一个工作。

我的问题原来是我试图同时写入不同的标签。

我没有写入同一数据流任务中的每个选项卡,而是将每个选项卡放入其自己的数据流中,以便每次写入一次一个。这解决了这个问题。

答案 1 :(得分:2)

检查您的Excel目标是否为空数据(如果适用,标题行除外)。

我遇到Hresult: 0x80004005 Description: "Cannot expand named range."错误,我的问题不是很明显:

  • 我将两个Excel文件中的Union All存入一个Excel文件
  • 一个来源的第一列是一个数字。另一个来源是字母数字。
  • 我将源的第一列更改为新的Derived Column,它变成了字母数字。
  • (我忽略了清理目的地 - 它仍然有现有数据,其中前几行数据是数字的)
  • Union All工作正常,但目标失败(源文件也显示红色X)

我通过“截断”excel文件修复它,回到标题行。 (我可以通过将A列中的一些样本行设置回数字来重新创建错误)。我想我现在将使用一个空的Excel文件模板并首先覆盖目的地(除非有easier way?)

答案 2 :(得分:1)

您无法同时从同一工作簿中写入不同的工作表,因为excel文件在用作目标时会被写入锁定

答案 3 :(得分:0)

我遇到了类似的问题,但在随机工作表(任务)上失败了。花了一个多星期的时间尝试所有可能的解决方案而没有任何成功,我发现我的计算机上安装了Microsoft Office 2007(32位),而其他所有内容都是64位的。我在服务器上部署并测试了64位的所有内容,并且工作正常。

我不确定这是不是你的情况,但希望它可以帮助你。