2009-10-28 62 views
0

我正在将Access数据库转换为SQL Server 2005.我已经使用SSMA成功迁移了数据和原始模式,现在正在对数据库进行规范化处理要求我添加一些唯一的标识符。不尊重种子值的SQL Server 2005标识规范

我们有的一些列以前是使用自动编号数据类型创建的,这很好。但是,我需要为其他数据创建无意义但唯一的标识符,所以我使用带有Identity Specification属性的int数据类型。我在'101'播种,以保持此数据高于当前存在的数据已经具有唯一标识符的范围,因为它们最终将驻留在同一个表中。

我的问题是,当我使用种子值为'101'且增量为'1'的Identity Specification创建新的int时,数字从'1'开始。我试图种下:

USE dbMyDatabase 
DBCC checkident(tblMyTable, reseed, 101) 

无济于事。任何建议将不胜感激。提前致谢!

+0

你使用的是CREATE TABLE myTbl(ID int IDENTITY(101,1))还是别的? – 2009-10-28 19:27:37

+0

我最初使用带有“New Column ...”命令的SQL Server Manager Express创建了该字段。我只是删除它,并再次使用加列: USE dbMyDatabase ALTER TABLE tblMyTable ADD FLDID INT IDENTITY(101,1) 和它的工作就像一个魅力。对于微软的“快捷方式”,我越来越感到愤怒,尤其是对于SSMA和SQL Server Manager而言,但我应该更好地了解并亲自完成。 感谢您的回复!它现在完美。 – 2009-10-28 19:42:19

回答

1

解决方案是通过手动使用SQL查询来创建列。通过“新建列...”选项添加它每次都会产生不正确的结果。现在我添加了它

USE dbMyDatabase 
ALTER TABLE tblMyTable 
ADD fldID INT IDENTITY(101,1) 

它工作得很好。