Закончилось место под счетчик в таблице Integer IDENTITY runs out of scope
Если у вас в таблице есть автоинкрементное поле, к примеру, типа int , и следующее автоинкрементное значение превышает максимальное значение для типа этого поля, не отчаивайтесь — это не беда
Такое происходит с большими таблицами, откуда часто удаляют и вставляют новые значения. Таким образом в нумерации имеются провалы из-за удаления данных, а максимальное значение для типа данных счетчика быстро достигается. Ошибка будет примерно такой такой: Server: Msg 8115, Level 16, State 1, Line 2 Arithmetic overflow error converting IDENTITY to data type int. Arithmetic overflow occurred.
Варианты решения:
- Расширьте тип данных. Если у вас был int, поставьте bigint. Помните, если у вас значение этого поля использовалось в процедурах и прочем коде, вам придется их исправить на использование нового типа!
- Второй вариант ленивый. Если у Вас данные в таблице постоянно обновляются и есть большой кусок места до минимального значения счетчика( selectmin(auto_inc_field) fromyour_table) в этом поле, если смотреть от нуля, и если вы уверены, что если вы начнете нумерацию с нуля, то пока вы заполните этот промежуток, старые данные уже будут удалены, соответственно блок нумерации счетчика освободится, то этот вариант для Вас! Вы можете элементарно начать нумерацию заново или с какого-то конкретного стартового номера следующей командой:
DBCC CHECKIDENT ("your_table", RESEED, 1); GOЭта команда заменяет значение следующего автоинкрементного значение на 1. То есть, это есть замена текущего автоикремента.
- Вариант для тех у кого есть время и в случае если строк в таблице меньше чем вариантов значений счетчика. Вариант один из наиболее надёжных. Создаете копию таблицы (желательно без индексов) и порциями копируете данные из старой таблицы в новую. Таким образом вы получаете все ваши данные с индексацией с нуля плотно упакованные относительно значений счетчика.
Конечно, если у вас есть связанные таблицы по этому полю, Вам конечно ещё придется обновить старые значения счетчиков на новые.
Если есть вопросы или другие способы решения проблемы, то милости прошу, в коменты!