2015-01-05 113 views
0

当我试图选择信息从一个数据库复制到另一个使用SSIS。我直接从旧的SSMS中编写新表格,所以它们应该是相同的。它们被设置为[Col1],[Col2],[Col3],[Col4],[Col5],并且具有[Col1]和[Col2]的聚类PK。违反PRIMARY KEY约束插入空表

我开始设立SSIS与OLEDB源与SELECT语句

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

你是绝对肯定的目标表中的PK是两列,而不是只是其中之一? –

+0

再次检查两个表格的模式是否相同。 – chris544

+1

修改您的目的地表格。删除主键。运行包。您的所有数据都应该加载。然后运行一个查询,找到重复的'选择D.Col1,D.Col2 FROM dbo.Table为d GROUP BY D.Col1,D.Col2 HAVING COUNT(1)> 1;'这是否查询得到什么?如果是这样,那么你有你的重复。如果没有,那么你的主键不是你指定的。 – billinkc

回答

0

源表是大小写敏感的。目的地表不是。在将Col1的归类更改为CS而不是CI时,再次将其删除并重新创建。

我仍然不知道为什么有重复之间的差异取出PK和行踢到错误文件后返回,但只要它的工作,这不是重要的。

相关问题