Установите Identity_insert on - Merge Replication
У меня есть репликация слияния, настроенная между двумя базами данных, и я использую диапазоны идентификаторов для обоих.
Я хочу добавить определенную строку в объединенную таблицу (устанавливая значение идентификатора для чего-то вне диапазона идентификации) в издателе. Когда я пытаюсь это сделать, я получаю следующую ошибку.
Вставка не удалась. Он противоречил проверке диапазона идентификации ограничение в базе данных "xxx", реплицированная таблица "dbo.yyy", столбец 'Yyy_id. Если столбец идентификатора автоматически управляется репликации, обновите диапазон следующим образом: для издателя выполните sp_adjustpublisheridentityrange; для Абонента, запустите Агент распространения или агент объединения.
Есть ли способ принудительно установить конкретное значение идентификатора в реплицированную таблицу слиянием, которая использует управление диапазоном идентификаторов?
Ответы
Ответ 1
Один из способов - обеспечить, чтобы каждый node в топологии репликации использовал различный диапазон значений идентичности, чтобы дубликаты не возникали.
Например, издатель может назначил диапазон 1-100, Абонент A диапазон 101-200 и подписчик B диапазон 201-300. Если строка вставлены в Издатель и значением идентификации является, например, 65, это значение повторяется для каждого Абонент. Когда вставки репликации данных у каждого Абонента, это не увеличьте значение столбца идентификатора в таблица Абонента; вместо этого вставляется буквальное значение 65. Только пользовательские вставки, но не репликация вставки агента вызывают идентичность значение столбца, которое должно быть увеличено.
Ref. Репликация столбцов идентичности