Арбитры на базе технологии Microsoft COM
Все арбитры конфликтов, основанные на технологии COM и поставляемые с SQL Server, обрабатывают конфликты обновления, а там, где это оговорено специально, они также обрабатывают конфликты вставки и удаления. Все арбитры производят отслеживание столбцов; большинство из них также производят отслеживание строк. Эти и все другие основанные на технологии COM арбитры конфликтов объявляют типы конфликтов, которые они обрабатывают, а для всех остальных типов конфликтов агент слияния использует арбитр по умолчанию.
Арбитры конфликтов устанавливаются во время процесса установки SQL Server. Выполните хранимую процедуру sp_enumcustomresolvers для просмотра всех арбитров конфликтов, зарегистрированных на компьютере. При выполнении этой процедуры отображаются описание и глобальный уникальный идентификатор (GUID) для каждого арбитра в отдельном результирующем наборе.
Указание арбитра
SQL Server Management Studio: Как указать арбитр слияния статей (среда SQL Server Management Studio)
Программирование репликации на языке Transact-SQL: Как указать арбитр слияния статей (программирование репликации на языке Transact-SQL)
В следующей таблице описываются атрибуты конкретных арбитров конфликтов.
Имя |
Требуемые входные данные |
Описание |
Комментарии |
---|---|---|---|
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). |
См. также