插入空表时违反主键约束

时间:2015-01-05 16:53:08

标签: sql-server database ssis

我尝试使用SSIS将选择信息从一个数据库复制到另一个数据库。我直接从SSMS中的旧表编写新表,因此它们应该是相同的。它们被设置为[Col1],[Col2],[Col3],[Col4],[Col5],具有[Col1]和[Col2]的聚类PK。

我开始使用带有select语句

的OLEDB源在SSIS中设置数据流任务
SELECT [Col1], [Col2], [Col3], [Col4], [Col5] FROM [DBO].[dbo].[table] WHERE [Col5] LIKE 'AB%'

然后是SQL Server目标。我一直收到主键约束错误,因此我将其更改为OLEDB源和文件目标以进行错误处理。将615911行写入数据库,并将另外49970行写入该文件。

我无法在被拒绝的行之间找到任何共同的线程。由于源表上的PK约束与目标的PK约束相同,因此它们都是唯一的,因为它们必须是唯一的。我已经检查过并且目标表中都没有,但是当我尝试从错误输出文件复制到目标表时仍然会出现PK错误。据我所知,目标表中甚至没有相同[Col1]或[Col2]的条目,尽管其他行确实有重复[Col1]或[Col2]。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

源表区分大小写。目标表不是。删除它并在将Col1更改为CS而不是CI的排序时再次创建它。

我仍然不知道为什么删除PK后返回的重复项与错误文件中的行之间存在差异,但只要它正常工作,这并不重要。