マージ パブリケーションの競合情報の表示 (レプリケーション 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_conflicts および decentralized_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_conflicts および decentralized_conflicts の値に応じて、次のいずれかの操作を実行します。

    • パブリッシャー側のパブリケーション データベースに対して、sp_helpmergedeleteconflictrows を実行します。 手順 1. で確認した、競合が発生しているソース テーブルの名前を @source_object に指定します。 (省略可) 特定のパブリケーションの競合情報が返されるように制限するには、@publication に値を指定します。 これにより、パブリッシャーに格納されている削除競合の情報が返されます。

    • サブスクライバー側のサブスクリプション データベースに対して、sp_helpmergedeleteconflictrows を実行します。 手順 1. で確認した、競合が発生しているソース テーブルの名前を @source_object に指定します。 (省略可) 特定のパブリケーションの競合情報が返されるように制限するには、@publication に値を指定します。 これにより、サブスクライバーに格納されている削除競合の情報が返されます。

関連項目

概念

マージ レプリケーションの競合検出および解決の詳細