忽略SSIS中的错误

时间:2013-01-08 09:54:22

标签: visual-studio-2010 ssis

我收到“违反UNIQUE KEY约束'AK_User'。当尝试使用SSIS将数据从excel文件复制到sql db时,无法在对象'dbo.tblUsers中插入重复键。

是否有任何方法可以忽略此错误,让包继续下一条记录而不停止?

我需要的是,如果它插入三条记录但是第一条记录是重复的,而不是失败,它应该继续其他记录并插入它们。

1 个答案:

答案 0 :(得分:1)

有一个名为propagate的系统变量,可用于继续或停止程序包的执行。

1.为失败的任务创建一个ON-Error事件处理程序。通常,它是为整个Data Flow Task创建的。

2.按F4获取所有变量列表,然后点击顶部的图标

enter image description here

显示System Variable。默认情况下Propagate变量为True,您需要将其更改为false,这基本上意味着SSIS不会将错误传播到其他组件并让执行继续

enter image description here

Update 1:

要跳过坏行,基本上有两种方法: -

1.使用查找

尝试匹配源和目标中的primary key column values,然后使用Lookup No Match Outputdestination。如果值与目标不匹配,则插入其他行只是跳过行或使用Lookup Match Output

重定向到某个表或平面文件

实施例

enter image description here

有关查阅的详细信息,请参阅this文章

2.或者您可以将错误行重定向到平面文件或表。每个SSIS数据流组件都有一个错误输出。 例如,对于派生组件,错误输出对话框是

enter image description here

但是这种情况可能对你的情况没有帮助,因为目标中的重定向错误行无法正常工作。如果发生错误,它会重定向整个数据而不在目标中插入任何行。我认为这是因为OLEDB目的地执行bulk insert或使用transactions插入数据。请尝试使用lookup来实现您的功能。