【问题标题】:Creating SSIS Package in SSDT. Conditional Split in Data Flow Task Causes Package To Break在 SSDT 中创建 SSIS 包。数据流任务中的条件拆分导致包中断
【发布时间】: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


【解决方案1】:

我收到了这个确切的错误信息。我尝试了其他答案的建议,但都没有奏效。

我的问题原来是我试图同时写入不同的选项卡。

我没有写入同一个数据流任务中的每个选项卡,而是将每个选项卡放入它自己的数据流中,这样每次写入都会发生一次。这解决了问题。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        我不确定这是否是您的情况,但希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-05
          • 2012-04-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多