我使用SSIS将SQL Server 2008 prod数据库中的数据转储到平面文件,然后使用大容量插入将这些平面文件加载到Server 2008 dev数据库中。SSIS包在大容量插入之前运行截断表语句,但当我运行它时仍然会收到以下错误:“该语句已终止。违反主键约束。无法插入重复键。”为什么在截断后会有一个重复的键?在大容量插入之前,我还需要做些什么来清除主键吗?
发布于 2012-08-03 17:44:14
如果您已经截断了表,那么主键冲突必须来自文件中的重复数据。尝试大容量插入到一个没有PK约束的新表中,然后检查表中是否有重复项(可能比编写一些工具或脚本直接解析文件更容易)。您可以通过这种方式创建一个没有约束的模拟表:
SELECT * INTO dbo.new_bulk_source
FROM dbo.old_source
WHERE 1 = 0;然后将包更改为引用此表,执行插入操作,然后运行:
SELECT key FROM dbo.new_bulk_source
GROUP BY key
HAVING COUNT(*) > 1;我敢打赌,电话肯定是从房子里传来的(或者电话没能成功)。
https://dba.stackexchange.com/questions/21972
复制相似问题