如何查看合并发布的冲突信息(复制 Transact-SQL 编程)

在合并复制中解决冲突后,落选行中的数据将写入冲突表中。 这些冲突数据可以使用复制存储过程以编程方式进行查看。 有关详细信息,请参阅高级合并复制冲突的检测和解决

查看所有类型冲突的冲突信息和落选行数据

  1. 在发布服务器上,对发布数据库执行 sp_helpmergepublication。 请注意结果集中以下列的值:

    • centralized_conflicts - 1 指示冲突行存储在发布服务器上,0 指示冲突行未存储在发布服务器上。

    • decentralized_conflicts - 1 指示冲突行存储在订阅服务器上,0 指示冲突行未存储在订阅服务器上。

      注意注意

      合并发布的冲突日志记录行为是通过使用 sp_addmergepublication@conflict_logging 参数设置的。 已不推荐使用 @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. (可选)查看相关项目的冲突行。 根据步骤 1 中 centralized_conflictsdecentralized_conflicts 的值,请执行下列操作之一:

    • 在发布服务器上,对发布数据库执行 sp_helpmergeconflictrows。 将步骤 1 中的项目的冲突表指定给 @conflict_table。 (可选)指定 @publication 的值,以便将返回的冲突信息限制为特定发布。 这将会返回落选行的行数据和其他信息。

    • 在订阅服务器上,对订阅数据库执行 sp_helpmergeconflictrows。 将步骤 1 中的项目的冲突表指定给 @conflict_table。 这将会返回落选行的行数据和其他信息。

仅查看与删除失败相关的冲突的信息

  1. 在发布服务器上,对发布数据库执行 sp_helpmergepublication。 请注意结果集中以下列的值:

    • centralized_conflicts - 1 指示冲突行存储在发布服务器上,0 指示冲突行未存储在发布服务器上。

    • decentralized_conflicts - 1 指示冲突行存储在订阅服务器上,0 指示冲突行未存储在订阅服务器上。

      注意注意

      合并发布的冲突日志记录行为是通过使用 sp_addmergepublication@conflict_logging 参数设置的。 已不推荐使用 @centralized_conflicts 参数。

  2. 在发布服务器上对发布数据库,或在订阅服务器上对订阅数据库执行 sp_helpmergearticleconflicts。 为 @publication 指定值,以便只返回属于特定发布的项目的冲突表信息。 这将返回具有冲突的项目的冲突表信息。 请注意任何相关项目的 source_object 值。 如果项目的 conflict_table 值为 NULL,则在该项目中只发生了删除冲突。

  3. (可选)查看删除冲突的冲突信息。 根据步骤 1 中 centralized_conflictsdecentralized_conflicts 的值,请执行下列操作之一:

    • 在发布服务器上,对发布数据库执行 sp_helpmergedeleteconflictrows。 将步骤 1 中发生冲突的源表的名称指定给 @source_object。 (可选)指定 @publication 的值,以便将返回的冲突信息限制为特定发布。 这将返回发布服务器上存储的删除冲突信息。

    • 在订阅服务器上,对订阅数据库执行 sp_helpmergedeleteconflictrows。 将步骤 1 中发生冲突的源表的名称指定给 @source_object。 (可选)指定 @publication 的值,以便将返回的冲突信息限制为特定发布。 这将返回订阅服务器上存储的删除冲突信息。