Я пытаюсь вставить несколько тысяч строк в таблицу в базе данных, которая реплицируется на два сервера. От издателя или подписчика я получаю ту же ошибку:
Msg 548, Level 16, State 2, Line 1
The insert failed. It conflicted with an identity range check constraint in database 'XXX', replicated table 'dbo.NODE_ATTRIB_RSLT', column 'ID'. If the identity column is automatically managed by replication, update the range as follows: for the Publisher, execute sp_adjustpublisheridentityrange; for the Subscriber, run the Distribution Agent or the Merge Agent.
The statement has been terminated.
Проверяя ограничение на таблицу, мне кажется, что я должен иметь возможность вставлять не менее 1000 строк одновременно, прежде чем столкнуться с проблемами. Тем не менее, я получаю ту же ошибку при попытке вставить всего несколько десятков строк!
Вот как я пытаюсь вставить данные:
insert into NODE_ATTRIB_RSLT
([NODE_ID]
,[ATTRIB_ID]
,[STATE_ID]
,[PLAN_REVISION_ID]
,[TIMESTAMP]
,[VALUE]
,[VALUE_TEXT]
,[LAST_MODIFIED])
SELECT [NODE_ID]
,[ATTRIB_ID]
,[STATE_ID]
,[PLAN_REVISION_ID]
,[TIMESTAMP]
,[VALUE]
,[VALUE_TEXT]
,[LAST_MODIFIED] FROM [NODE_ATTRIB_RSLT_TEMP]
Столбец PK - это автоматически сгенерированный идентификатор, называемый ID. Чтобы попытаться вставить меньше строк за раз, я добавил предложение WHERE в конец выбора следующим образом:
WHERE ID >= 1000 and ID <1100
но безрезультатно.
Запуск sp_adjustpublisheridentityrange на издателе выполняется успешно, но безрезультатно.
Как я могу исправить эту проблему со вставками?
Как изменить диапазоны ограничений диапазона идентификаторов до более приемлемого уровня, оставив репликацию запущенной?