1

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

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

那么,可以做到吗?

4

3 回答 3

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 列是我的身份列,我打开了一秒钟然后又关闭了。

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

于 2013-02-21T02:43:36.087 回答
1

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

于 2013-02-20T21:42:53.547 回答
0

我设法找到了一个解决方案,尽管它有点笨拙,来更新种子列。

基本上,添加和删除项目,直到达到正确的 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
于 2014-05-01T11:15:26.477 回答