Azure sql database 更改SQL Azure上的标识列

Azure sql database 更改SQL Azure上的标识列,azure-sql-database,Azure Sql Database,我有一个列是主键,在SQLAzure数据库中设置为标识 我需要更改种子值(从其他数字继续),但Azure门户的用户界面不允许编辑该字段。我也看到很多帖子暗示这是不可能的,但它们都很老了 那么,可以这样做吗?您不能在Azure SQL中使用DBCC CHECKIDENT和RESEED选项。您必须使用正确的种子值创建一个新表,并将旧数据加载到其中,重命名表,然后删除旧表。实际上,我已经环顾四周,进行了研究、试验和测试,有一种简单的方法可以做到这一点,但不包括创建新表。它使用如下脚本: SET IDE

我有一个列是主键,在SQLAzure数据库中设置为标识

我需要更改种子值(从其他数字继续),但Azure门户的用户界面不允许编辑该字段。我也看到很多帖子暗示这是不可能的,但它们都很老了


那么,可以这样做吗?

您不能在Azure SQL中使用DBCC CHECKIDENT和RESEED选项。您必须使用正确的种子值创建一个新表,并将旧数据加载到其中,重命名表,然后删除旧表。

实际上,我已经环顾四周,进行了研究、试验和测试,有一种简单的方法可以做到这一点,但不包括创建新表。它使用如下脚本:

SET IDENTITY_INSERT MyTable ON
GO

INSERT INTO MyTable (IDdata, Field2, Field3)
       VALUES (154337, 'A', 'B')
GO

SET IDENTITY_INSERT MyTable OFF
GO
我希望你们能看到IDdata列是我的身份列,我打开了一秒钟,然后又关闭了


为我做的工作。请分享知识,这样其他人就不必像我一样挣扎。

我已经设法找到了一个解决方案,尽管有点麻烦,更新种子专栏

基本上,添加和删除项目直到达到正确的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
开始交易
去
声明@max_id int
从用户中选择@max_id=max([id])
而(@max_id<3499)
开始
插入用户(用户名、密码)值(“”,“”)
从用户中选择@max_id=max([id])
从[Id]=@max\u Id的用户中删除
结束
犯罪

嗯,Azure不允许我在添加数据后将列更改为identity。你试过了吗?怎么走?