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

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

Чтобы использовать разрешение конфликтов, на всех узлах должен выполняться SQL Server 2008 или более поздняя версия, кроме того, для всех узлов необходимо разрешить обнаружение конфликтов. Функцию выявления конфликтов можно активизировать в процессе настройки топологии или по завершении этого процесса. При активизации функции выявления конфликтов для существующей топологии замораживать данную топологию не требуется. Однако если конфликты, связанные с изменениями, возникают еще до того, как все узлы активизированы для выявления конфликтов, то репликация не может гарантировать выявление этих конфликтов. Дополнительные сведения о настройке топологии см. в разделе Как настроить одноранговую репликацию транзакций (программирование репликации на языке Transact-SQL).

ПримечаниеПримечание

Настраивая одноранговую репликацию, укажите идентификатор для каждого узла. Этот идентификатор должен быть уникальным на всех узлах в топологии и хранится в столбце originator_id системной таблицы MSpeer_originatorid_history. Если узел удаляется из топологии, идентификатор сохраняется в таблице журнала. Идентификатор сохраняется, чтобы предотвратить ложные конфликты, если в топологии продолжается репликация изменений, сделанных в удаленном узле. Если нужно повторно использовать идентификатор для нового узла, сначала необходимо вручную удалить идентификатор из таблицы MSpeer_originatorid_history на всех узлах. Прежде чем удалить идентификатор для узла, выполните процедуру sp_requestpeerresponse, чтобы убедиться, что все изменения, исходящие с этого узла, были реплицированы.

Активизация средств выявления конфликтов в процессе конфигурирования топологии

  • При создании публикации на каждом узле с помощью хранимой процедуры sp_addpublication выполните следующие действия.

    • Укажите значение true для @p2p_conflictdetection.

    • Укажите в качестве параметра @p2p_originator_id целочисленное значение больше нуля. Этот идентификатор не должен использоваться больше нигде в пределах топологии. Для получения списка использовавшихся идентификаторов выполните хранимую процедуру sp_help_peerconflictdetection.

    • Укажите значение для @p2p_continue_onconflict. Рекомендуется указать значение false. Дополнительные сведения см. в подразделе «Обработка конфликтов» раздела Обнаружение конфликтов в одноранговой репликации.

Активизация средств выявления конфликтов по завершении процесса конфигурирования топологии

  1. В дальнейшем предполагается, что топология состоит из трех узлов: A, B и C. На узле A выполните хранимую процедуру sp_configure_peerconflictdetection:

    • укажите в качестве параметра @publication имя публикации, а в качестве параметра @action — значение enable;

    • укажите в качестве параметра @p2p_originator_id целочисленное значение больше нуля. Этот идентификатор не должен использоваться больше нигде в пределах топологии. Для получения списка использовавшихся идентификаторов выполните хранимую процедуру sp_help_peerconflictdetection;

    • укажите значение для @continue_onconflict. Рекомендуется указать значение false. Дополнительные сведения см. в подразделе «Обработка конфликтов» раздела Обнаружение конфликтов в одноранговой репликации.

  2. Повторите шаг 1 для узла B и для узла C.

  3. Выполните процедуру sp_help_peerconflictdetection с одного из узлов; укажите имя публикации для @publication. Проверьте результирующий набор и удостоверьтесь в том, что средства для выявления конфликтов активизированы на всех узлах, а также в том, что каждый узел имеет уникальный идентификатор инициатора.

Отключение обнаружения конфликтов

  • Для каждого узла топологии выполните процедуру sp_configure_peerconflictdetection. Укажите в качестве параметра @publication имя публикации, а в качестве параметра @action — значение disable.