查找未获取重复值

时间:2019-07-17 09:44:42

标签: sql-server ssis-2012

enter image description here我正在尝试将平面文件加载到SQL表。我正在使用“缓慢更改维度”来更新现有行并插入新行。 我还使用了“ LOOKUP”来确保仅插入新行。

我的桌子只有两个柱子

SORD-主键(Varchar(50))

CHGAMT-浮动

但是我的ETL失败了,因为它没有选择匹配的行。

我已经针对至少10个其他进口商品执行了此操作,并且一切正常。但是,对于这个特定的文件和表,由于现有的主键,我无法“插入”新记录。但是Lookup应该能够识别并阻止它发生。

这是错误消息:

  

[插入目标[33]]错误:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80040E2F。   OLE DB记录可用。源:“ Microsoft SQL Server本机客户端11.0”结果:0x80040E2F说明:“该语句已终止。   OLE DB记录可用。源:“ Microsoft SQL Server本机客户端11.0”结果:0x80040E2F说明:“违反了主键约束'********'。无法在对象'******'中插入重复键。重复键值是(OR14878029)。”。

我知道这是什么错误,但是我不知道为什么Lookup不提取该值并将其发送到“匹配的行”而不是“未匹配的行”路径。

1 个答案:

答案 0 :(得分:3)

请考虑一种情况,其中源中有两个重复的行。一个刚插入到目标表中,与此同时,另一个重复行从查找任务中传递。 要解决此问题,您可以使用“排序转换”任务,该任务将从源中删除重复的值。

Sort Transformation task in SSIS