Visual studio 2010 忽略SSIS中的错误
我收到“违反唯一密钥约束“AK_User”。尝试使用SSIS将数据从excel文件复制到sql db时,无法在对象“dbo.tblUsers”中插入重复密钥 是否有任何方法可以忽略此错误,并让包继续执行下一条记录而不停止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获取所有变量的列表
我需要的是,如果它插入三条记录,但第一条记录是重复的,而不是失败,它应该继续使用其他记录并插入它们。有一个名为
propagate
的系统变量,可用于继续或停止包的执行
1.为失败的任务创建ON Error
事件处理程序。通常,它是为整个数据流任务创建的
2.按F4
获取所有变量的列表,然后单击顶部的图标
要显示系统变量
。默认情况下传播
变量将为True,您需要将其更改为false,这基本上意味着SSIS不会将错误传播到其他组件并让执行继续
Update 1:
要跳过坏行,基本上有两种方法:-
1.使用查找
尝试匹配源和目标中的主键列值
,然后使用查找不匹配输出
到您的目标
。如果该值与目标不匹配,则插入行,否则只需跳过行或使用查找匹配输出重定向到某个表或平面文件
范例
有关查找的更多详细信息,请参阅文章
2。
或者您可以将错误行重定向到平面文件或表格。每个SSIS数据流组件都有一个错误输出。
例如,对于衍生组件,“错误输出”对话框为
但在您的情况下,这种情况可能对您没有帮助,因为目标中的重定向错误行无法正常工作。如果发生错误,它将重定向整个数据,而不在目标中插入任何行。我认为发生这种情况是因为OLEDB目标使用批量插入
或使用事务
插入数据。因此,请尝试使用uselookup
以实现您的功能。即使出现错误,软件包现在也已成功完成,但没有添加任何记录。这可能与事务有关吗?我认为您需要跳过出现错误的组件,因此建议您使用Propagate
变量。我已更新了answ呃现在