首页 文章

BIDS - SSIS - 重定向行错误发送太多行

提问于
浏览
4

我有一个简单的数据流 . 源是一个小的平面文件,里面有大约16k行 . 目标是OLE DB目标,SQL 2008表上有3部分唯一键 . 数据流通过一些简单的转换;行计数,派生列,数据转换等 .

一切都很简单,一切正常 .

我的问题是,在这个数据中,有2行在主键方面是重复的,2个重复的行违反了该键,因此共有4行 . 在OLE DB目标上,我已将错误输出设置为重定向行,并将行发送到Error表,该表具有足够的列以供我识别坏行 .

问题是即使有4个cuplrits,转换仍然会将1268行写入错误表 .

有任何想法吗?

谢谢 .

**

只是添加,如果我删除2个重复行,整个文件导入成功.... 16,875行 . 毫无疑问,只有2行违反了密钥,但错误重定向会影响1268 .

**

3 回答

  • 12

    我找到了解决方案 .

    如果使用OLE目标中的数据访问模式“表或视图”而不是“表或视图 - 快速加载”加载数据,问题就会消失 .

    我能找到的唯一相关评论是在MSDN上;

    目标上的任何约束失败都会导致FastLoadMaxInsertCommitSize定义的整批行失败 .

    因此,在我的情况下,行大小似乎是1268,并且违反该键的2个重复行导致整个批次被重定向到错误目标表 .

  • 0

    您确定其他行是由于PK违规导致的错误吗?通过错误路径可以使用几个附加列(ErrorCode,ErrorColumn) . 这可能表明您有不同的问题 .

  • 0

    在SQL 2008中,您可以将失败的行重定向到例如平面文件目的地 . 转到目标OLEDB任务转到错误输出(选择窗口中的所有字段) . 使用下面的组合框选择重定向行并应用,然后确定 . 接下来,将OLEDB的预先约束(红色箭头)拖到新的Flat文件任务并配置此任务(不要更改列的默认映射) .

    现在,您应该能够更轻松地找到错误行 .

    埃里克

相关问题