0

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

因此,我想编写一个一次性查询,它将检测并从表中删除该身份规范。

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

我也试过,设置Identity_insert属性ON,但它只是一次。当服务器再次连接时,它不允许我保存。

SET IDENTITY_INSERT <tableName> ON;

我也不想通过IDENTITY_INSERT ON在将数据插入其中之前进行设置来更改我的后端程序。

有什么建议么?

4

1 回答 1

0

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

或者

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

如何找到您的 IDENTITY 列...

select object_name(object_id) table_name,name column_name 
from sys.columns
where is_identity = 1
于 2013-02-06T08:55:49.517 回答