Visual studio 2010 忽略SSIS中的错误

Visual studio 2010 忽略SSIS中的错误,visual-studio-2010,ssis,Visual Studio 2010,Ssis,我收到“违反唯一密钥约束“AK_User”。尝试使用SSIS将数据从excel文件复制到sql db时,无法在对象“dbo.tblUsers”中插入重复密钥 是否有任何方法可以忽略此错误,并让包继续执行下一条记录而不停止 我需要的是,如果它插入三条记录,但第一条记录是重复的,而不是失败,它应该继续使用其他记录并插入它们。有一个名为propagate的系统变量,可用于继续或停止包的执行 1.为失败的任务创建ON Error事件处理程序。通常,它是为整个数据流任务创建的 2.按F4获取所有变量的列表

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

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


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

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

1.为失败的任务创建
ON Error
事件处理程序。通常,它是为整个
数据流任务创建的

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

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

Update 1:

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

1.使用查找

尝试匹配源和目标中的
主键列值
,然后使用
查找不匹配输出
到您的
目标
。如果该值与目标不匹配,则插入行,否则只需跳过行或使用
查找匹配输出重定向到某个表或平面文件

范例

有关查找的更多详细信息,请参阅文章

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


但在您的情况下,这种情况可能对您没有帮助,因为目标中的重定向错误行无法正常工作。如果发生错误,它将重定向整个数据,而不在目标中插入任何行。我认为发生这种情况是因为OLEDB目标使用
批量插入
或使用
事务
插入数据。因此,请尝试使用use
lookup
以实现您的功能。

即使出现错误,软件包现在也已成功完成,但没有添加任何记录。这可能与事务有关吗?我认为您需要跳过出现错误的组件,因此建议您使用
Propagate
变量。我已更新了answ呃现在