Как reset идентификационное семя в Sql Azure

Я пробовал следующее, чтобы reset мое поле Identity Seed столбца:

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

Это не работает в sql azure, мне было интересно, что будет лучшим способом сделать это. Удалить и обновить таблицу?

Ответы

Ответ 1

Как вы видели, DBCC CHECKIDENT в настоящее время не поддерживается в базе данных Windows Azure SQL Database. Наиболее полным способом перенастройки идентификатора будет создание новой таблицы с той же структурой и установка идентичности в значение Reseed IDENTITY (reseedval, 1), загрузка существующих записей из исходной таблицы с помощью SET IDENTITY_INSERT tablename ON, а затем падение старой таблицы и переименовать новую. Reset, Reset ограничения и т.д.

Ответ 2

Я думаю, что ответ @haldyr, вероятно, был несправедливо удален как правильный.

Последняя версия SQL Azure (v12) поддерживает DBCC CHECKIDENT (и множество других), однако, если ваш сервер базы данных azure isn Вам будет необходимо обновить.

Обновление легко, перейдите на свой сервер Azur DB на новый портал (фактический сервер не сам БД) и нажмите большую кнопку Latest Update.

enter image description here

ПРИМЕЧАНИЕ: Имейте в виду, что существует множество предостережений для обновления (например, некоторые старые вещи не поддерживают его), поэтому стоит прочитать статью http://azure.microsoft.com/en-us/documentation/articles/sql-database-preview-whats-new/#V12AzureSqlDbPreviewGaTable

Ответ 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

Надеюсь, что это поможет.