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


Арбитры на базе технологии Microsoft COM

Все арбитры конфликтов, основанные на технологии COM и поставляемые с SQL Server, обрабатывают конфликты обновления, а там, где это оговорено специально, они также обрабатывают конфликты вставки и удаления. Все арбитры производят отслеживание столбцов; большинство из них также производят отслеживание строк. Эти и все другие основанные на технологии COM арбитры конфликтов объявляют типы конфликтов, которые они обрабатывают, а для всех остальных типов конфликтов агент слияния использует арбитр по умолчанию.

Арбитры конфликтов устанавливаются во время процесса установки SQL Server. Выполните хранимую процедуру sp_enumcustomresolvers для просмотра всех арбитров конфликтов, зарегистрированных на компьютере. При выполнении этой процедуры отображаются описание и глобальный уникальный идентификатор (GUID) для каждого арбитра в отдельном результирующем наборе.

Указание арбитра

В следующей таблице описываются атрибуты конкретных арбитров конфликтов.

Имя

Требуемые входные данные

Описание

Комментарии

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий суммирование

Имя суммируемого столбца. Столбец должен относиться к арифметическому типу данных (например, int, smallint, numeric и т. д.).

Победитель в конфликте определяется по значению приоритета. Указанные значения столбца устанавливаются равными сумме значений исходного столбца и целевого столбца. Если одно из значений — NULL, итоговое значение устанавливается равным значению другого столбца.

Поддерживает конфликты обновления, и только отслеживание столбцов.

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий усреднение

Имя усредняемого столбца. Столбец должен относиться к арифметическому типу данных (например, int, smallint, numeric и т. д.).

Победитель в конфликте определяется по значению приоритета. Значения результирующего столбца устанавливаются равными среднему значению от значений исходного и целевого столбца. Если одно из значений — NULL, итоговое значение устанавливается равным значению другого столбца.

Поддерживает конфликты обновления, и только отслеживание столбцов.

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий тип DATETIME (побеждает более раннее значение)

Имя столбца, применяемого для определения победителя конфликта. Столбец должен иметь тип данных datetime.

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

Поддерживает конфликты обновления, отслеживание строк и столбцов. Значения столбцов сравниваются напрямую, и поправка на разницу в часовых поясах не производится.

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий тип DATETIME (побеждает более позднее значение)

Имя столбца, применяемого для определения победителя конфликта. Столбец должен иметь тип данных datetime.

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

Поддерживает конфликты обновления, отслеживание строк и столбцов.

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий максимум

Имя столбца, применяемого для определения победителя конфликта. Столбец должен относиться к арифметическому типу данных (например, int, smallint, numeric и т. д.).

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

Поддерживает отслеживание строк и столбцов.

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий минимум

Имя столбца, применяемого для определения победителя конфликта. Столбец должен относиться к арифметическому типу данных (например, int, smallint, numeric и т. д.).

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

Поддерживает конфликты обновления, отслеживание строк и столбцов.

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий слияние текста

Имя текстового столбца и разделитель, например @resolver_info = '[col1][===]'.

Победитель в конфликте определяется по значению приоритета. Конфликтующие текстовые столбцы устанавливаются равными объединенному значению, состоящему из общего префикса, за которым следует уникальная часть от издателя, затем следует разделитель, а затем — уникальная часть от подписчика.

Поддерживает конфликты обновления, и только отслеживание столбцов.

Microsoft Арбитр конфликтов MicrosoftSQL Server с победой подписчика

Нет входных данных.

Конфликт разрешается в пользу подписчика, независимо от того является он источником или пунктом назначения.

Поддерживает все типы конфликтов.

Microsoft Арбитр MicrosoftSQL Server, использующий приоритетный столбец

Имя столбца, применяемого для определения победителя конфликта. Столбец должен относиться к арифметическому типу данных (например, int, smallint, numeric и т. д.).

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

Поддерживает конфликты обновления, отслеживание строк и столбцов.

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий только передачу

Нет входных данных.

Принимаются изменения, переданные на издатель; изменения не загружаются на подписчик.

Поддерживает все типы конфликтов.

Microsoft Арбитр конфликтов MicrosoftSQL Server, использующий только загрузку

Нет входных данных.

Отклоняются изменения, переданные на издатель; изменения загружаются на подписчик.

Поддерживает все типы конфликтов.

Арбитр хранимых процедур Microsoft SQL Server

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

Разрешение конфликта зависит от логики указываемой хранимой процедуры.

Поддерживает конфликты обновления. Дополнительные сведения см. в разделе Как реализовать нестандартный арбитр конфликтов на основе хранимых процедур для статьи публикации слиянием (программирование репликации на языке Transact-SQL).