SSIS:违反主键

时间:2016-03-16 15:00:41

标签: sql-server database ssis dataflowtask

我正在为其他用户排查以下错误。 另一个用户有一个非常简单的SSIS包。 他的包裹包含来源和目的地。

Source是一个不同的数据库。让我们说A 和目的地是一个不同的数据库。让我们说B

用户希望将数据从表SrcDBTabA复制到DstDBTabB

在他的SSIS中,他使用数据流任务。数据流任务的隔离级别设置为Serializable,TransactionOption是Supported。

OLE DB Source的数据流任务,他使用SQL Query从SrcDBTabA获取数据。他的查询是

SELECT SourceID,SourceName,SourceLastName FROM SrcDBTabA WHERE STATUS = 1

然后在OLE DB目标中,他将源输入列映射到他的表,并选中Table Lock和Check Contraints选项。 他的FastLoadKeepIndentity是假的 FastLoadKeepNulls为False FastLoadOptions是TabLock,Check_Constraints

程序包大部分时间运行良好,但有时会因错误而失败 违反主键。 “无法在具有唯一索引的对象中插入重复键行”

现在,这是源数据库表SrcDBTabA中发生的有趣事情。

此表每隔15分钟从另一个数据库获取数据,并在Source数据库中连续写入数据。我们在这个数据库中使用了大量的NOLOCKS查询,在从另一个数据库写入源数据库表SrcDBTabA时,我们确实使用了NOLOCKS。

源数据库表SrcDBTabA从不具有重复的键,ID列设置为主列并且是群集的。

IS Read Committed SnapShot ON的Source DB属性设置为FALSE。

我们认为可能发生此错误的一件事是由于污垢分类

我确实在网上看到了以下原因。链接为Same Data Read Twice

但是当我们在Select查询中没有使用NO Lock并且其隔离级别设置为Serialized

时,我无法理解SSIS中是如何读取重复的主键值的

我无法对此做出回答,也无法在质量保证中重现此问题。

任何想法或推理

0 个答案:

没有答案