Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQLSERVER:如何将现有的表int主键更改为标识列?_Sql Server_Database_Sql Server 2000_Primary Key_Identity - Fatal编程技术网

Sql server SQLSERVER:如何将现有的表int主键更改为标识列?

Sql server SQLSERVER:如何将现有的表int主键更改为标识列?,sql-server,database,sql-server-2000,primary-key,identity,Sql Server,Database,Sql Server 2000,Primary Key,Identity,我的数据库有一个包含数千条记录的表。主键是一个整数。与此列关联的外键约束很多 我想将此列更改为标识键。最好的方法是什么?我还需要将此更新发送给我们的客户 在Sql Server 2000中工作的答案可获得额外积分。在Enterprise Manager中,右键单击表视图中的表,选择设计 单击列的左侧(然后,双击“列属性”下的“列”中的“标识”将其启用,默认为“自动递增1”如果列作为现有关系的一部分是整数,则它已经是唯一的。因此,您不必担心重复!这已经避免了一个巨大的麻烦 您可以发出ALTER T

我的数据库有一个包含数千条记录的表。主键是一个整数。与此列关联的外键约束很多

我想将此列更改为标识键。最好的方法是什么?我还需要将此更新发送给我们的客户


在Sql Server 2000中工作的答案可获得额外积分。

在Enterprise Manager中,右键单击表视图中的表,选择设计


单击列的左侧(然后,双击“列属性”下的“列”中的“标识”将其启用,默认为“自动递增1”

如果列作为现有关系的一部分是整数,则它已经是唯一的。因此,您不必担心重复!这已经避免了一个巨大的麻烦

您可以发出ALTER TABLE命令来更改列,也可以使用Enterprise Manager进行更改。

没有一个“ALTER TABLE”DDL可用于将现有列更改为标识列。您只能将新标识列添加到现有表中

这可以在Enterprise Manager中完成,但您需要知道Sql server正在创建一个新表并在后台复制您的数据。您可能对此有一些问题。下面有一篇文章对此进行了详细解释


在您的场景中,我认为您需要将此脚本与某些东西结合起来,以禁用并重新启用fk。

SQL Server Management Studio中的一个强大功能挽救了我的一天

在SSMS中,转到选项->设计器->表和数据库设计器,选中“自动生成更改脚本”,取消选中“防止保存需要重新创建表的更改”

在对象资源管理器中,转到表并选择将获取标识规范的列。右键单击并选择“修改”。在列属性面板中,展开树“标识规范”并将“(Is Identity)”更改为“是”。现在在左上角的大小上,选择图标“生成脚本”。注意警告消息

现在,您将拥有一个生成的脚本,该脚本将删除所有约束,使用标识重新创建表,并重新创建约束。哇

我将测试它,并将结果发布在这里

更新:一切正常。我忘了在问题中说我需要脚本在客户端安装中复制修改


这个网站真是太棒了。我花在写我自己的答案上的时间,我得到了另外三个答案!

你不觉得我的建议更简单吗?:)@STuart:这是同样的解决方案,但neves先保存了他的脚本。@neves:Enterprise Manager也有同样的“更改和保存”的概念@gbn-我知道,谢谢你这么说:)为了让事情变得简单,为什么要生成你不需要的脚本呢need@Stuart:我忘了说我必须将升级发送给我们的客户。我需要记录我所做的,并将其放入我们的数据库模式更新程序中。这些脚本是非常必要的。