日期:2014-05-18  浏览次数:20708 次

很妖的创建主键的问题!麻烦看清楚问题再回复
SQL code

--表t3(a nvarchar(max)) 40W条数据
--执行语句
alter table t3 add id int identity primary key

--报错
消息 1505,级别 16,状态 1,第 1 行
CREATE UNIQUE INDEX 终止,因为发现对象名称 'dbo.t3' 和索引名称 'PK__t3__619B8048' 有重复的键。重复的键值为 (226727)。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。
语句已终止。



drop掉t3,重新生成一个t3,再执行,有可能完成,也有可能这样失败,再失败时错误参数会略微变化:
 'PK__t3__656C112C' 有重复的键。重复的键值为 (225333)
试下来一次可以,一次不可以,然后循环。。。。妖怪了,还有貌似原表数据少的时候不会有问题。

环境是SQL 2005

这么妖的问题,估计只有高手能解决了。。。




------解决方案--------------------
我的版本是
SQL code

select @@version
--Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   Nov 24 2008 13:01:59   Copyright (c) 1988-2005 Microsoft Corporation  Developer Edition on Windows NT 6.1 (Build 7601: Service Pack 1) 

select serverproperty('productversion')
      ,serverproperty('productlevel')
      ,serverproperty('edition')
--9.00.4035.00 SP3 Developer Edition