Поделиться через


Конфликт в расширенной репликации слияния: настраиваемые разрешатели на основе COM

Область применения:SQL Server

Пользовательские резольверы предоставляют большую гибкость по сравнению с механизмом разрешения по умолчанию и могут реализовать бизнес-логику, необходимую для приложений, использующих реплицированные данные. Пользовательский сопоставитель на основе COM — это динамически подключаемая библиотека (DLL), которая реализует COM-интерфейс ICustomResolver, его методы и свойства, а также другие поддерживающие интерфейсы и определения типов, разработанные специально для разрешения конфликтов.

Примечание.

Рекомендуется использовать обработчик бизнес-логики вместо пользовательского сопоставителя на основе COM, если это возможно. Дополнительные сведения об обработчиках бизнес-логики см. в статье Выполнение бизнес логики во время синхронизации слияния.

Чтобы создать пользовательский сопоставитель COM, можно использовать библиотеку типов, предоставляемую в replrec.dll; По умолчанию эта библиотека устанавливается на <диске>:\Program Files\Microsoft SQL Server\nnn\COM.

Перед написанием пользовательского COM-сопоставителя необходимо определиться по следующим вопросам:

  • Типы изменений строк, конфликты которых необходимо разрешить, например обновления, вставки и удаления, а также, должен ли разрешатель вызываться во время загрузки изменений слияния, выгрузки изменений слияния, или его необходимо вызывать в обеих ситуациях. Можно указать один тип изменений, все изменения, или любое их сочетание. Сопоставитель конфликтов слияния по умолчанию обрабатывает любые конфликты, не охваченные пользовательским решением для разрешения конфликтов.

  • Нужно ли использовать отслеживание изменений в столбце при разрешении конфликта. Когда включено отслеживание на уровне столбцов, только данные в тех столбцах, где существует конфликт, помечаются как конфликт, иначе данные объединяются. Однако конфликты разрешаются таким же способом, как и при отслеживании на уровне строк: победитель по приоритету перезаписывает всю строку данных (однако данные могут быть смесью значений от издателя, подписчиков или измененными значениями, которые не были получены ни от издателя, ни от подписчиков). Дополнительные сведения см. в статье Обнаружение и разрешение конфликтов репликации слиянием.

Чтобы реализовать пользовательский арбитр конфликтов на основе технологии COM, см. раздел Реализация пользовательского арбитра конфликтов для статьи объединения.

Пользовательский резолвер указывается для статьи, но не для всей публикации. Тот же самый резольвер может использоваться с более чем одной статьей, однако логика в пользовательских резольверах часто характерна для конкретной таблицы. Если используемая в статье таблица изменена после создания сопоставителя (например, изменено имя столбца, используемого при устранении конфликта), может потребоваться изменение и повторная компиляция пользовательского сопоставителя.

Чтобы указать пользовательский резолвер, см. раздел Указание резолвера для слияния статей.