【问题标题】:SSIS/DTS error when exporting multiple tables导出多个表时出现 SSIS/DTS 错误
【发布时间】:2014-07-01 18:16:32
【问题描述】:

我在这里遇到了一个奇怪的问题,当我从 MSSMS 2008R2 运行导入/导出并将这 4 个表导出到具有相同表结构的 access 数据库时,它将出现以下错误:

"- 复制到“sdgrpmap”(错误)消息错误 0xc0202009:数据流 任务 1:SSIS 错误代码 DTS_E_OLEDBERROR。

发生了 OLE DB 错误。错误代码:0x80004005。

(SQL Server 导入和导出向导)错误 0xc0209029:数据流 任务 1:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。这 “输入”目标输入“(144)”失败,因为错误代码 0xC020907B 发生,并且“输入”目标输入上的错误行处置 (144)" 指定错误时失败。指定的错误发生 指定组件的对象。可能会发布错误消息 在此之前提供有关失败的更多信息。

(SQL Server 导入和导出向导)错误 0xc0047022:数据流 任务 1:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。过程输入 组件“目标 2 - stdchp”(131) 上的方法因错误而失败 处理输入“目标输入”(144) 时出现代码 0xC0209029。这 已识别的组件从 ProcessInput 方法返回错误。 该错误是特定于组件的,但该错误是致命的并且 将导致数据流任务停止运行。可能有错误 在此之前发布的消息,其中包含有关失败的更多信息。 (SQL Server 导入和导出向导)"

现在我尝试验证数据没有问题,并验证所有表映射都正确且数据类型也正确,但仍然失败。

我通过单独运行 4 个表导出中的每一个来缩小范围,并且每个都运行良好。但是当我将所有 4 个都添加回来时,它又失败了。我添加了 4 个中的 3 个,它仍然运行。表“sdgrpmap”是要导出的表组中的问题表。不知道为什么,但是用谷歌搜索了所有的错误代码,它们的范围很广,并不是我的问题。

有人知道为什么一个表在一组表导出中运行时会失败,而不是单独运行吗?听起来像是锁定或更新问题,访问连接设置为共享,但可能是 sql server 问题。

谢谢

编辑:添加显示 3 个表写出正确数量的记录的报告,但第 4 个“stdchp”仅写出 2622 条记录中的 193 条。

  • 执行(成功)

  • 复制到chapterorigin(成功)传输16行

  • 复制到sdgrpmap(错误)传输了40行

消息错误 0xc0202009:数据流任务 1:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码: 0x80004005。 (SQL Server 导入和导出向导)错误 0xc0209029: 数据流任务 1:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREON错误。 "输入"目标输入" (144)" 失败,因为发生错误代码 0xC020907B,并且错误 “输入”目标输入“(144)”上的行处置指定失败 关于错误。在指定的指定对象上发生错误 零件。在此之前可能会发布更多错误消息 有关故障的信息。 (SQL Server 导入和导出向导) 错误 0xc0047022:数据流任务 1:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。组件上的 ProcessInput 方法 “目标 2 - stdchp”(131)失败,错误代码为 0xC0209029,而 处理输入“目的地输入”(144)。已识别的组件 从 ProcessInput 方法返回错误。错误是具体的 到组件,但错误是致命的,将导致数据流 任务停止运行。在此之前可能会发布错误消息 提供有关失败的更多信息。 (SQL Server 导入和 导出向导)

  • 复制到stdchp(已停止)

  • 复制到stdpdrpanelmap(已停止)

  • 执行后(成功)消息

  • 信息 0x4004300b:数据流任务 1:“组件“目标 - 章节来源”(22)”写入了 16 行。 (SQL Server 导入和导出向导)
  • 信息 0x4004300b:数据 流任务 1:“组件“目的地 1 - sdgrpmap”(66)”写了 40 行。 (SQL Server 导入和导出向导)
  • 信息 0x4004300b: 数据流任务 1:“组件“目的地 2 - stdchp”(131)”写了 193 行。 (SQL Server 导入和导出向导)
  • 信息 0x4004300b: 数据流任务 1:“组件“目的地 3 - stdpdrpanelmap”(201)” 写了 4853 行。 (SQL Server 导入和导出向导)

【问题讨论】:

  • 是否有名为stdchp 的数据库对象?如果是这样,SQL Server 中的 DDL 是什么? MS Access 中的定义?
  • 是的,这是其中一张表,并且对象确实存在,并且在源和目标中都正确命名。大小写也是正确的。刚刚尝试将它重新运行到作为目标的本地访问数据库,它写出 3 个表,但最后一个它只部分输出。这与它在网络共享上时有点不同,因为它部分写出了第 3 个表,而第 4 个表已完成。
  • 请记住,当我一次导出一个表时,它可以完美运行。
  • 您是否保存了 SSIS,或者您是否每次都在导入/导出。为什么不保存 SSIS 并将其设置为作业并运行作业,而不是每次都通过向导?
  • 我保存了 SSIS,但我每次都重新创建它,因为来回添加/删除表以找出 htis 更简单。看起来可能是 97 版本的访问数据库可能与此有关。能够使用 2000 db 并在 10 个表中导入一些测试数据,最多 100,000 条记录,没有问题。

标签: sql sql-server sql-server-2008 ssis


【解决方案1】:

我认为它失败是因为表格中的数据。

如果您将所有四个表中的数据组合并放入一个表中,则目标表应支持所有 4 个表的要求。

归结为-

  • 是否允许空值
  • 数据类型和字段大小

你可以在你的包中 implement re-direct bad rows 逻辑,这样你就可以有坏数据(如果有的话)。同样在派生列的帮助下,处理空值。

【讨论】:

  • 不,4 个 sql 表将转到 4 个单独的访问表。当我一次在一个表上运行导出时,它会成功,所以它不是数据。我什至查看了数据并查询是否有任何无效字符等,但这是在将其导入 sql 之前完成的。
  • 如前所述,它似乎是一个 access 97 问题,因为导出到 access 2000 工作正常,但我们不能使用 2000,因为消费者根据他们的程序要求需要 97,目前无法更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 2015-09-21
  • 2011-06-02
  • 1970-01-01
  • 2021-02-25
  • 2020-08-03
相关资源
最近更新 更多