Sql server 如何在SQLServer2005中通过sql查询从主键列中删除identity属性

Sql server 如何在SQLServer2005中通过sql查询从主键列中删除identity属性,sql-server,Sql Server,我有一个表,它不应该在多个数据库的主键列上设置Identity属性。可能是有人无意中从设计视图中设置了其属性 所以,我想编写一个一次性查询,它将检测并从表中删除该标识规范 我阅读了所有的搜索文章,对创建新表、复制其元数据/数据和重命名等解决方案不满意,因为该表非常关键,列对其有许多限制 我也尝试过,在上设置Identity\u insert属性,但仅此一次。当服务器再次连接时,它不允许我保存 SET IDENTITY_INSERT <tableName> ON; SET IDENT

我有一个表,它不应该在多个数据库的主键列上设置Identity属性。可能是有人无意中从设计视图中设置了其属性

所以,我想编写一个一次性查询,它将检测并从表中删除该标识规范

我阅读了所有的搜索文章,对创建新表、复制其元数据/数据和重命名等解决方案不满意,因为该表非常关键,列对其有许多限制

我也尝试过,在上设置
Identity\u insert
属性
,但仅此一次。当服务器再次连接时,它不允许我保存

SET IDENTITY_INSERT <tableName> ON;
SET IDENTITY\u INSERT ON;
在将数据插入后端过程之前,我不想通过设置
IDENTITY\u INSERT ON
来更改后端过程


有什么建议吗?

不幸的是,没有其他方法可以从表中删除标识属性,而不先创建删除属性并重新创建表。因此,您需要将数据存储在新表中,删除原始表,然后将临时表重命名为正确的名称

您可以只向表中添加一个新列,然后将数据复制到此新列中,从表中删除标识列,最后将新列设置为主键

如何找到您的身份栏

select object_name(object_id) table_name,name column_name 
from sys.columns
where is_identity = 1