我有一个主键列,并在SQL Azure数据库中设置为标识。
我需要更改种子值(从不同的数字继续),但Azure门户所拥有的用户界面不允许编辑该字段。我也看到许多帖子表明它无法完成,但它们已经很老了。
那么,可以吗?
答案 0 :(得分:2)
实际上,我已经四处查看,研究,试验和测试,并且有一种简单的方法可以做到这一点,不包括创建新表。它使用这样的脚本:
SET IDENTITY_INSERT MyTable ON
GO
INSERT INTO MyTable (IDdata, Field2, Field3)
VALUES (154337, 'A', 'B')
GO
SET IDENTITY_INSERT MyTable OFF
GO
我希望你得到IDdata列是我的标识列,我打开了一秒钟然后关闭了。
为我工作了吗?请分享知识,以便其他人不必像我一样挣扎。
答案 1 :(得分:1)
您不能在Azure SQL中使用DBCC CHECKIDENT和RESEED选项。你必须创建一个具有正确种子值的新表,并将旧数据加载到其中,重命名表,然后删除旧表。
答案 2 :(得分:0)
我已经设法找到一个解决方案,所有这些都是有点hacky,来更新种子列。
基本上,添加和删除项目,直到达到正确的ID。在下面的示例中,这将重新设置Users表,以便下一个新项目的Id为3500。
BEGIN TRANSACTION
GO
DECLARE @max_id int
SELECT @max_id = max([Id]) FROM users
WHILE (@max_id < 3499)
BEGIN
INSERT INTO Users (Username, Password) VALUES ('','')
SELECT @max_id = max([Id]) FROM Users
DELETE FROM Users WHERE [Id] = @max_id
END
COMMIT