Как просмотреть сведения о конфликтах для публикаций слиянием (программирование репликации на языке Transact-SQL)
Если конфликт разрешается в репликации слиянием, данные из проигравшей строки записываются в таблицу конфликтов. Эти данные конфликта можно просмотреть программно с помощью хранимых процедур репликации. Дополнительные сведения см. в разделе Расширенное обнаружение и разрешение конфликтов репликации слиянием.
Просмотр сведений о конфликте и данных проигравшей строки для всех типов конфликта
Выполните процедуру 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
Выполните процедуру sp_helpmergearticleconflicts на издателе в базе данных публикации или на подписчике в базе данных подписки. Укажите значение в параметре @publication, чтобы возвратить только сведения о конфликте статей, принадлежащих конкретной публикации. Таким образом будут получены сведения о конфликтах для статей, содержащих конфликты. Запомните значение conflict_table для всех интересующих статей. Если параметр conflict_table для статьи имеет значение NULL, удалите только конфликты, которые возникли в этой статье.
(Необязательно) Просмотрите строки конфликта для интересующих статей. В зависимости от значений параметров centralized_conflicts и decentralized_conflicts, полученных на шаге 1, выполните одно из следующих действий.
На издателе в базе данных публикации выполните хранимую процедуру sp_helpmergeconflictrows. Укажите таблицу конфликтов для статьи (из шага 1) в параметре @conflict_table. Задайте значение @publication, чтобы ограничить возвращаемые сведения о конфликтах выбранной публикацией (необязательно). В результате будут возвращены данные для потерянной строки и другие сведения.
На подписчике в базе данных подписки выполните хранимую процедуру sp_helpmergeconflictrows. Укажите таблицу конфликтов для статьи (из шага 1) в параметре @conflict_table. В результате будут возвращены данные для потерянной строки и другие сведения.
Просмотр только сведений о конфликтах, в которых операция удаления завершилась ошибкой
Выполните процедуру sp_helpmergepublication на издателе в базе данных публикации. Запомните значения следующих столбцов в результирующем наборе.
centralized_conflicts — значение 1 показывает, что конфликтующие строки хранятся на издателе, а значение 0 показывает, что на издателе не хранятся конфликтующие строки.
decentralized_conflicts — значение 1 показывает, что конфликтующие строки хранятся на подписчике, а значение 0 показывает, что на подписчике не хранятся конфликтующие строки.
Примечание Способ регистрации конфликта в публикации слиянием устанавливается с помощью параметра @conflict_logging хранимой процедуры sp_addmergepublication. Использование параметра @centralized_conflicts является устаревшей возможностью.
Выполните процедуру sp_helpmergearticleconflicts на издателе в базе данных публикации или на подписчике в базе данных подписки. Укажите значение в параметре @publication, чтобы возвратить только сведения о таблице конфликтов для статей, принадлежащих конкретной публикации. Таким образом будут получены сведения о конфликтах для статей, содержащих конфликты. Запомните значение source_object для всех интересующих статей. Если параметр conflict_table для статьи имеет значение NULL, удалите только конфликты, которые возникли в этой статье.
(Необязательно) Просмотрите информацию о конфликтах удаления. В зависимости от значений параметров centralized_conflicts и decentralized_conflicts, полученных на шаге 1, выполните одно из следующих действий.
На издателе в базе данных публикации выполните хранимую процедуру sp_helpmergedeleteconflictrows. Укажите в параметре @source_object имя исходной таблицы (из шага 1), в которой произошел конфликт. Задайте значение @publication, чтобы ограничить возвращаемые сведения о конфликтах до конфликтов выбранной публикацией (необязательно). Таким образом возвращаются сведения о конфликте операций удаления, хранящиеся на издателе.
На подписчике в базе данных подписки выполните хранимую процедуру sp_helpmergedeleteconflictrows. Укажите в параметре @source_object имя исходной таблицы (из шага 1), в которой произошел конфликт. Задайте значение @publication, чтобы ограничить возвращаемые сведения о конфликтах до конфликтов выбранной публикацией (необязательно). Таким образом возвращаются сведения о конфликте операций удаления, сохраненные на подписчике.