我尝试了以下方法来重置我的列的标识种子:
DBCC CHECKIDENT ('dbo.Stuff', RESEED, 0)
这在sql azure中不起作用,我想知道这样做的最佳方法是什么。删除并重新创建表?
答案 0 :(得分:9)
我认为@ haldyr的答案可能被不公平地删除了。
最新版本的SQL Azure(v12)支持DBCC CHECKIDENT
(and a bunch of others)但是如果您的azure数据库服务器不是全新的,则需要升级。
升级很简单,在新门户(实际服务器而不是数据库本身)上转到您的Azure数据库服务器,然后单击大Latest Update
按钮。
注意:请注意升级有一些警告(就像一些较旧的东西并不支持它),因此值得阅读文章http://azure.microsoft.com/en-us/documentation/articles/sql-database-preview-whats-new/#V12AzureSqlDbPreviewGaTable
答案 1 :(得分:6)
如您所见,DBCC CHECKIDENT is not currently supported in Windows Azure SQL Database。重新设置标识的最完整方法是创建一个具有相同结构的新表,并将标识设置为Reseed值IDENTITY(reseedval,1),使用SET IDENTITY_INSERT tablename ON从原始表加载现有记录,然后删除旧表,并重命名新表。重置权限,重置约束等
答案 2 :(得分:0)
我最近自己遇到了这个问题。我通过插入和删除表中的项目来解决它,直到我达到所需的种子值。
在下面的示例中,这将重新设置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
希望这有帮助。