我有一个作为主键的列,并在 SQL Azure 数据库中设置为标识。
我需要更改种子值(从不同的数字继续),但 Azure 门户的用户界面不允许编辑该字段。我还看到许多帖子表明它无法完成,但它们已经很老了。
那么,可以做到吗?
我有一个作为主键的列,并在 SQL Azure 数据库中设置为标识。
我需要更改种子值(从不同的数字继续),但 Azure 门户的用户界面不允许编辑该字段。我还看到许多帖子表明它无法完成,但它们已经很老了。
那么,可以做到吗?
实际上,我已经环顾四周,研究,试验和测试,并且有一种简单的方法可以做到这一点,其中不包括创建新表。它使用这样的脚本:
SET IDENTITY_INSERT MyTable ON
GO
INSERT INTO MyTable (IDdata, Field2, Field3)
VALUES (154337, 'A', 'B')
GO
SET IDENTITY_INSERT MyTable OFF
GO
我希望你知道 IDdata 列是我的身份列,我打开了一秒钟然后又关闭了。
为我做了工作。请分享知识,这样其他人就不必像我一样挣扎。
您不能在 Azure SQL 中将 DBCC CHECKIDENT 与 RESEED 选项一起使用。您必须使用正确的种子值创建一个新表并将旧数据加载到其中,重命名表,然后删除旧表。
我设法找到了一个解决方案,尽管它有点笨拙,来更新种子列。
基本上,添加和删除项目,直到达到正确的 ID。在下面的示例中,这将为用户表重新设定种子,因此下一个新项目的 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