0

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

有什么办法可以忽略这个错误,让包继续下一条记录不停止?

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

4

1 回答 1

1

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

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

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

在此处输入图像描述

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

在此处输入图像描述

Update 1:

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

1.使用查找

尝试匹配primary key column values源和目标,然后使用Lookup No Match Output您的destination。如果值与目标不匹配,则插入行,否则只需跳过行或使用重定向到某个表或平面文件Lookup Match Output

例子

在此处输入图像描述

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

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

在此处输入图像描述

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

于 2013-01-08T10:06:22.740 回答