13

У меня есть репликация слияния, настроенная между двумя базами данных, и я использую диапазоны идентификаторов для обоих.Set Identity_insert on - Merge Replication

Я хочу добавить определенную строку в объединенную таблицу (устанавливая значение идентичности для чего-то вне диапазона идентификации) в издателе. Когда я пытаюсь это сделать, я получаю следующую ошибку.

Вставка не удалась. Он противоречил проверке диапазона идентификаторов ограничений в базе данных «xxx», реплицированной таблице «dbo.yyy», колонке «yyy_id». Если столбец идентификатора автоматически управляется репликацией , обновите диапазон следующим образом: для издателя выполните sp_adjustpublisheridentityange; для Абонента, запустите агент распространения или агент объединения.

Есть ли способ принудительно установить конкретное значение идентичности в реплицированную таблицу слиянием, которая использует управление диапазоном идентификаторов?

ответ

3

Один из способов - обеспечить, чтобы каждый узел топологии репликации использовал различный диапазон значений идентичности, чтобы дубликаты не возникали.

Например, издатель может быть назначен диапазон 1-100, абонентом A диапазон 101-200, а абонент В желаемый диапазон 201-300. Если строка , вставленная в Publisher, и значение идентификатора составляет, например, 65, , это значение реплицируется каждому абоненту . Когда репликация вставляет данные у каждого Абонента, это не увеличивает значение столбца идентификатора в таблице Абонента; вместо этого вставляется значение литерала . Только пользователь вставляет, но не реплицирует Вложения агента вызывают тождество значение столбца, которое должно быть увеличено.

Реф. Replicating Identity Columns

+0

Спасибо Mitch, но в ситуации, с которой я имею дело, клиенты активно вводят записи как в паб, так и в sub, которые получают назначенные идентификаторы. Существует определенный идентификатор, который я хочу вставить в паб (ниже текущего диапазона). но я хочу, чтобы custs добавляли в паб, чтобы добавить в диапазон. –