在SQL Azure上更改标识列

时间:2013-02-20 19:20:40

标签: azure-sql-database

我有一个主键列,并在SQL Azure数据库中设置为标识。

我需要更改种子值(从不同的数字继续),但Azure门户所拥有的用户界面不允许编辑该字段。我也看到许多帖子表明它无法完成,但它们已经很老了。

那么,可以吗?

3 个答案:

答案 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