Вы можете «повторно заполнить» таблицу, чтобы следующий назначенный столбец идентификаторов был меньше текущего максимального значения в таблице. Однако любой последующий DBCC CHECKIDENT
сбросит внутренний счетчик до максимального значения, которое в данный момент находится в столбце. Возможно, отсюда и происходит сброс? И, конечно, в конце концов вставка достигнет двойного значения, что приведет к «Интересным временам» для команды поддержки производства.
По большому счету у вас проблемы. Я рекомендую создать одноразовый скрипт для удаления / сброса значений Uber-high ID. Обновление строк (и всех связанных значений внешнего ключа) - это один из вариантов, хотя это может потребовать отключения ограничений внешнего ключа, и я не знаю, что еще, поэтому я бы не рекомендовал это делать. Другой вариант - создать точные копии всех данных для элементов с высоким идентификатором, используя более прагматичные значения идентификатора, а затем удалить исходные записи. Это взлом, но это приведет к созданию гораздо более удобной базы данных.
Да, и отследите людей, которые помещают эти значения с высоким идентификатором, и - по крайней мере - отзовите их права доступа к базе данных.