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


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

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

При выборе сопоставителя рассмотрите важность разрешения конфликтов в приложении, и определите, можно ли использовать стандартный сопоставитель конфликтов на основе приоритетов или необходимо выбрать сопоставитель статей.

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

Сопоставитель статей рекомендуется использовать, если прикладные задачи требуют более точно настроенных решений по сравнению с сопоставителем по умолчанию. Если решено использовать сопоставитель статей, рекомендуется применять обработчик бизнес-логики. Дополнительные сведения см. в статье Выполнение бизнес-логики при синхронизации слиянием.

В конечном счете, выбор между использованием сопоставителя статей или сопоставителя по умолчанию должен основываться на данных и потребностях бизнес-логики приложения. Рассмотрим, например сотрудников, которые вводят ранжирующие данные заказчиков в набор несекционированных таблиц на разных подписчиках; сотрудники охватывают различные категории (заведующие отделом, рядовые менеджеры, сотрудники отдела продаж), и категория задания определяет, чьим данным нужно отдать приоритет. В этом случае может быть построен сопоставитель статей, который использует данные о категориях заданий из статьи для определения победителя в возможном конфликте.

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

Проблема разрешения конфликта Рекомендация
Разным категориям пользователей нужны разные значения приоритета. Используйте сопоставитель конфликтов по умолчанию и создайте серверные подписки с разными значениями приоритета.

Or

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