【问题标题】:SSIS - Error Output - Redirect rowSSIS - 错误输出 - 重定向行
【发布时间】:2015-05-06 21:16:14
【问题描述】:

我有一个关于在 SSIS 中执行任务的结果的问题。

首先,这个查询是从 Access 中执行的。原始源是 Oracle 中的一组表,目标是 Access 中的本地表。该表有一个复合主键。当我从 access 执行查询时,我得到了超过一百万个寄存器,但在将此结果插入表中之前,Access 向我显示一条消息,通知 26 个寄存器违反了主键约束(它们是重复的) .所以它们没有被考虑在内。

我在 SQL SERVER 中使用相同的主键创建了目标表,我使用的是 Access 中使用的相同源(相同的查询),但是当数据流开始工作时,立即重定向超过 200.000 个寄存器作为错误输出。而且,当然,我正在等待在 Access 中看到的相同结果,只有 26 个寄存器被视为错误。

这些是来自 Access 的消息:

这是我对 SSIS 的配置及其结果:

结果

我试图尽可能清楚地解释这个疑问,但英语不是我的母语。

如果你需要澄清一些关于 的事情,请问我。

问候。

【问题讨论】:

  • 所有 200k 错误都在 pk 违规上?
  • 嗨,Amir,只有 32 个违反 pk 规则。我更新了表格,删除了主键,然后我做了一个分组,看看有多少重复,答案是 32。这就是为什么我对我的结果很迷茫。
  • 那么其余记录的错误是什么?列数据类型不匹配? FK 违规 ?数据是分批插入还是每行单独插入?最后一个可能导致整批记录由于单行而失败。如果删除 PK 允许插入所有记录而没有问题,那么可能就是这种情况。如果您知道 32 个 pk 值,请尝试在 where 子句中将它们过滤掉,然后查看其余的是否已处理。如果他们都成功了,情况可能就是这样。
  • 嗨@Amir。我放了一些图片,可能会更容易看到任何可能的问题。谢谢你能给我的任何帮助。
  • 你能发布错误日志吗?不仅仅是“流程”页面的打印屏幕?您是否验证了目标数据类型与输入匹配?

标签: sql-server redirect ssis dataflow


【解决方案1】:

我假设您使用的是OLEDB Destination 的默认配置。这意味着 Rows per batch 为空 (-1),最大插入提交大小为 2147483647。

每批次的行数

指定批处理中的行数。这个的默认值 属性为 –1,表示没有赋值。

最大插入提交大小

指定 OLE DB 目标尝试提交的批处理大小 在快速加载操作期间。值为 0 表示所有数据都是 在处理完所有行后在一个批次中提交。

如果这些行以 200.000 的批次提供给 OLEDB Destination,则所有这些行都将在一个批次/事务中插入。如果批次包含一个错误,则整个批次将失败。

将每批次的行数更改为 1 可以解决此问题,但会影响性能,因为它必须单独插入每一行。

【讨论】:

  • 嗨@JodyT。我放了一些图片,可能会更容易看到任何可能的问题。谢谢你能给我的任何帮助。到现在为止,一切似乎都行得通。
猜你喜欢
  • 2021-03-09
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多