首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server 2008中截断后,批量插入中的重复主键?

在Server 2008中截断后,批量插入中的重复主键?
EN

Database Administration用户
提问于 2012-08-03 17:40:52
回答 1查看 5.5K关注 0票数 3

我使用SSIS将SQL Server 2008 prod数据库中的数据转储到平面文件,然后使用大容量插入将这些平面文件加载到Server 2008 dev数据库中。SSIS包在大容量插入之前运行截断表语句,但当我运行它时仍然会收到以下错误:“该语句已终止。违反主键约束。无法插入重复键。”为什么在截断后会有一个重复的键?在大容量插入之前,我还需要做些什么来清除主键吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-08-03 17:44:14

如果您已经截断了表,那么主键冲突必须来自文件中的重复数据。尝试大容量插入到一个没有PK约束的新表中,然后检查表中是否有重复项(可能比编写一些工具或脚本直接解析文件更容易)。您可以通过这种方式创建一个没有约束的模拟表:

代码语言:javascript
复制
SELECT * INTO dbo.new_bulk_source
  FROM dbo.old_source
  WHERE 1 = 0;

然后将包更改为引用此表,执行插入操作,然后运行:

代码语言:javascript
复制
SELECT key FROM dbo.new_bulk_source
  GROUP BY key
  HAVING COUNT(*) > 1;

我敢打赌,电话肯定是从房子里传来的(或者电话没能成功)。

票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/21972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档