17

我尝试了以下方法来重置列的身份种子:

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

这在 sql azure 中不起作用,我想知道这样做的最佳方法是什么。删除并重新创建表?

4

3 回答 3

12

我认为@haldyr 的答案可能被不公平地删除为正确的。

最新版本的 SQL Azure (v12) 确实支持DBCC CHECKIDENT以及其他一些),但是如果您的 azure 数据库服务器不是全新的,您将需要升级。

升级很容易,转到新门户上的 azure DB 服务器(实际服务器不是 DB 本身),然后单击大Latest Update按钮。

在此处输入图像描述

注意:请注意升级有很多注意事项(就像一些旧的东西不支持它),所以它值得阅读文章http://azure.microsoft.com/en-us/documentation/articles/sql-数据库-预览-whats-new/#V12AzureSqlDbPreviewGaTable

于 2015-03-29T23:22:10.367 回答
6

如您所见,Windows Azure SQL 数据库当前不支持 DBCC CHECKIDENT。重新设置标识的最完整方法是创建一个具有相同结构的新表,并将标识设置为重新设置的值 IDENTITY(reseedval,1),使用 SET IDENTITY_INSERT 表名 ON 从原始表加载现有记录,然后删除旧表,并重命名新表。重置权限、重置约束等。

于 2012-12-06T19:52:26.217 回答
-1

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

在下面的示例中,这将为用户表重新设定种子,因此下一个新项目的 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:18:39.610 回答