应用程序正在使用具有 ID 列的 SQL Server 2008 数据库,但这些列不是主键且没有IDENTITY属性。
我现在需要做的是添加 PK 和IDENTITY属性。但是,必须保留旧 ID。
此外,我需要使用 SQL 命令(无 GUI)来执行此操作。
问题
我尝试了以下所有解决方案,但没有成功。
INSERT/UPDATE一个IDENTITY值IDENTITY多个表的约束ALTER TABLE ... SWITCH TO(如果源表没有 PK 而目标表有 PK 则不起作用)我不能使用序列代替IDENTITYs 作为主键,因为 2008 不支持序列
以下也不起作用:
SET IDENTITY_INSERT mydb.dbo.AZIENDE_NEW ON;
INSERT INTO mydb.dbo.AZIENDE_NEW
SELECT *
FROM mydb.dbo.AZIENDE_OLD;
Run Code Online (Sandbox Code Playgroud)我得到错误
消息 8101:只有在使用列列表且 IDENTITY_INSERT 为 ON 时,才能指定表 'mydb.dbo.AZIENDE_NEW' 中标识列的显式值
这在我看来是不合逻辑的。IDENTITY_INSERT应该是ON那个桌子...
我对其他解决方案持开放态度,但我没有更多想法。