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


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

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

Просмотр сведений о конфликте и данных проигравшей строки для всех типов конфликта

  1. Выполните процедуру sp_helpmergepublication на издателе в базе данных публикации. Запомните значения следующих столбцов в результирующем наборе.

    • centralized_conflicts — значение 1 показывает, что конфликтующие строки хранятся на издателе, а значение 0 показывает, что на издателе не хранятся конфликтующие строки.

    • decentralized_conflicts — значение 1 показывает, что конфликтующие строки хранятся на подписчике, а значение 0 показывает, что на подписчике не хранятся конфликтующие строки.

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

      Способ регистрации конфликта в публикации слиянием устанавливается с помощью параметра @conflict_logging хранимой процедуры sp_addmergepublication. Использование параметра @centralized_conflicts является устаревшей возможностью.

    В следующей таблице приводятся значения этих столбцов в зависимости от значений, указанных в параметре @conflict_logging.

    Значение @conflict_logging

    centralized_conflicts

    decentralized_conflicts

    publisher

    1

    0

    subscriber

    0

    1

    both

    1

    1

  2. Выполните процедуру sp_helpmergearticleconflicts на издателе в базе данных публикации или на подписчике в базе данных подписки. Укажите значение в параметре @publication, чтобы возвратить только сведения о конфликте статей, принадлежащих конкретной публикации. Таким образом будут получены сведения о конфликтах для статей, содержащих конфликты. Запомните значение conflict_table для всех интересующих статей. Если параметр conflict_table для статьи имеет значение NULL, удалите только конфликты, которые возникли в этой статье.

  3. (Необязательно) Просмотрите строки конфликта для интересующих статей. В зависимости от значений параметров centralized_conflicts и decentralized_conflicts, полученных на шаге 1, выполните одно из следующих действий.

    • На издателе в базе данных публикации выполните хранимую процедуру sp_helpmergeconflictrows. Укажите таблицу конфликтов для статьи (из шага 1) в параметре @conflict_table. Задайте значение @publication, чтобы ограничить возвращаемые сведения о конфликтах выбранной публикацией (необязательно). В результате будут возвращены данные для потерянной строки и другие сведения.

    • На подписчике в базе данных подписки выполните хранимую процедуру sp_helpmergeconflictrows. Укажите таблицу конфликтов для статьи (из шага 1) в параметре @conflict_table. В результате будут возвращены данные для потерянной строки и другие сведения.

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

  1. Выполните процедуру sp_helpmergepublication на издателе в базе данных публикации. Запомните значения следующих столбцов в результирующем наборе.

    • centralized_conflicts — значение 1 показывает, что конфликтующие строки хранятся на издателе, а значение 0 показывает, что на издателе не хранятся конфликтующие строки.

    • decentralized_conflicts — значение 1 показывает, что конфликтующие строки хранятся на подписчике, а значение 0 показывает, что на подписчике не хранятся конфликтующие строки.

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

      Способ регистрации конфликта в публикации слиянием устанавливается с помощью параметра @conflict_logging хранимой процедуры sp_addmergepublication. Использование параметра @centralized_conflicts является устаревшей возможностью.

  2. Выполните процедуру sp_helpmergearticleconflicts на издателе в базе данных публикации или на подписчике в базе данных подписки. Укажите значение в параметре @publication, чтобы возвратить только сведения о таблице конфликтов для статей, принадлежащих конкретной публикации. Таким образом будут получены сведения о конфликтах для статей, содержащих конфликты. Запомните значение source_object для всех интересующих статей. Если параметр conflict_table для статьи имеет значение NULL, удалите только конфликты, которые возникли в этой статье.

  3. (Необязательно) Просмотрите информацию о конфликтах удаления. В зависимости от значений параметров centralized_conflicts и decentralized_conflicts, полученных на шаге 1, выполните одно из следующих действий.

    • На издателе в базе данных публикации выполните хранимую процедуру sp_helpmergedeleteconflictrows. Укажите в параметре @source_object имя исходной таблицы (из шага 1), в которой произошел конфликт. Задайте значение @publication, чтобы ограничить возвращаемые сведения о конфликтах до конфликтов выбранной публикацией (необязательно). Таким образом возвращаются сведения о конфликте операций удаления, хранящиеся на издателе.

    • На подписчике в базе данных подписки выполните хранимую процедуру sp_helpmergedeleteconflictrows. Укажите в параметре @source_object имя исходной таблицы (из шага 1), в которой произошел конфликт. Задайте значение @publication, чтобы ограничить возвращаемые сведения о конфликтах до конфликтов выбранной публикацией (необязательно). Таким образом возвращаются сведения о конфликте операций удаления, сохраненные на подписчике.