启用已包含数据的标识列?

Joh*_*n S 3 sql sql-server

有人禁用了SQL DB中表的标识列.即使表中已有数据,是否可以重新启用该列的功能?并保持现有的身份价值?

我知道我可以将数据复制到另一个表并在设置Identity_Insert后重新插入.

mar*_*c_s 6

你不能接通IDENTITY在现有的列,在SQL Server中这是不可能的,现在(至少到2012版).

你需要做的就是你所描述的:

  • 创建新表你想要的结构,IDENTITY
  • 将现有表中的数据复制到新表中 SET IDENTITY_INSERT ON
  • 放下旧桌子
  • 将新表重命名为旧表名

您可以在SQL Server Mgmt Studio中的可视化表设计器中"重新启用"身份规范,但这实际上只为您执行上述步骤中的步骤.