如何重置在SQL Azure中的身份种子(How to reset identity seed in

2019-06-28 08:39发布

我曾尝试以下,以重置列的我的标识种子:

DBCC CHECKIDENT ('dbo.Stuff', RESEED, 0)

这并不在SQL Azure中工作,我想知道什么将去这样做的最佳方式。 删除并重新创建表?

Answer 1:

正如你所看到的, DBCC CHECKIDENT目前不支持在Windows Azure中的SQL数据库 。 补种的身份最完整的方法是创建一个新表具有相同的结构,并设置身份的重新设定种子值IDENTITY(reseedval,1),加载使用SET IDENTITY_INSERT表名从原来的表中已有的记录,然后删除旧表,并重新命名新的。 复位权限,复位约束等



Answer 2:

我觉得@ haldyr的答案可能是不公平的删除,因为它是正确的。

SQL Azure的(V12)的最新版本不支持DBCC CHECKIDENT ( 和一堆别人的 ),但是如果你的Azure数据库服务器不是全新的,你将需要升级。

升级很容易,去你蔚蓝的数据库服务器上的新门户(实际的服务器不是DB本身),然后点击大Latest Update按钮。

注意:要知道有一堆告诫,以升级(像一些旧的东西不支持),所以它值得一读的文章http://azure.microsoft.com/en-us/documentation/articles/sql-数据库预览什么新/#V12AzureSqlDbPreviewGaTable



Answer 3:

我最近碰到这个问题我自己。 我通过插入和删除项目表中,直到我达到所需的种子值解决它。

在下面的例子中,这将补种用户表,以便在未来新项目将有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

希望这可以帮助。



文章来源: How to reset identity seed in Sql Azure