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

Применимо к:SQL Server

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

Примечание.

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

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

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

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

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

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

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

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

См. также

Advanced Merge Replication Conflict Detection and Resolution
Microsoft COM-Based Resolvers