Неверное значение идентификатора после перехода на Azure SQL
Я использовал новый MS Data Migration Assistant ( ссылка v4.1) для переноса базы данных с сервера SQL 2008 R2 в базу данных SQL Azure. Процесс работал хорошо, а перенос данных работал отлично!
Однако после начала использования базы данных Azure из приложения при добавлении новой записи таблица со столбцом идентификаторов (определенным с помощью IDENTITY(1,1)) не работала. Последняя запись в таблице имела значение 207170 в столбце идентификаторов при копировании базы данных.
Первая попытка добавить в эту таблицу не удалась с ошибкой:
Cannot insert duplicate key in object X. The duplicate key value is (207168).
Как видите, число, которое пыталась использовать новая запись, было 207168. Но эта запись уже существовала. Следующая попытка не удалась с использованием 207169. Следующая попытка также не удалась. Но следующий работал нормально и использовал 207171.
Таким образом, похоже, что значение идентификатора для этой таблицы было на 3 числа ниже, чем следовало бы.
Столкнувшись с этим, я побежал DBCC CHECKIDENT ('table', NORESEED )
на каждой таблице в базе данных. Ни у одного из них, похоже, нет проблем, и вставка записи в другую таблицу работала нормально.
Я думаю, что при следующем переносе базы данных я буду запускать DBCC CHECKIDENT для каждой таблицы, чтобы убедиться, что значения идентификаторов верны.
У кого-нибудь еще возникла такая проблема? Есть ли способ избежать этого?
Изменить: Я восстановил базу данных до вставок, где это было сделано. Выход из DBCC CHECKIDENT был Checking identity information: current identity value '207167', current column value '207170'.