マージ パブリケーションの競合情報の表示 (レプリケーション Transact-SQL プログラミング)
マージ レプリケーションの競合を解決すると、優先されなかった行のデータが競合テーブルに書き込まれます。 この競合データは、レプリケーション ストアド プロシージャを使用してプログラムから表示できます。 詳細については、「マージ レプリケーションの競合検出および解決の詳細」を参照してください。
すべての種類の競合に関する競合情報と優先されなかった行のデータを表示するには
パブリッシャー側のパブリケーション データベースに対して、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
パブリッシャー側のパブリケーション データベースまたはサブスクライバー側のサブスクリプション データベースに対して、sp_helpmergearticleconflicts を実行します。 特定のパブリケーションに属するアーティクルの競合情報のみが返されるようにするには、@publication に値を指定します。 これにより、競合を持つアーティクルに対応する競合テーブル情報が返されます。 目的のアーティクルに対応する conflict_table の値を確認します。 アーティクルに対応する conflict_table の値が NULL の場合、そのアーティクル内では削除競合のみが発生しています。
(省略可) 目的のアーティクルで競合する行を確認します。 手順 1. の centralized_conflicts および decentralized_conflicts の値に応じて、次のいずれかの操作を実行します。
パブリッシャー側のパブリケーション データベースに対して、sp_helpmergeconflictrows を実行します。 手順 1. で確認したアーティクルの競合テーブルを @conflict_table に指定します。 (省略可) 特定のパブリケーションの競合情報が返されるように制限するには、@publication に値を指定します。 これにより、優先されなかった行の行データとその他の情報が返されます。
サブスクライバー側のサブスクリプション データベースに対して、sp_helpmergeconflictrows を実行します。 手順 1. で確認したアーティクルの競合テーブルを @conflict_table に指定します。 これにより、優先されなかった行の行データとその他の情報が返されます。
削除の失敗による競合に関する情報のみを表示するには
パブリッシャー側のパブリケーション データベースに対して、sp_helpmergepublication を実行します。 結果セットで、次の列の値を確認します。
centralized_conflicts - 1 は競合する行がパブリッシャーに格納されていることを示し、0 は競合する行がパブリッシャーに格納されていないことを示します。
decentralized_conflicts - 1 は競合する行がサブスクライバーに格納されていることを示し、0 は競合する行がサブスクライバーに格納されていないことを示します。
注 マージ パブリケーションの競合ログの動作は、sp_addmergepublication の @conflict_logging パラメーターを使用して設定します。 @centralized_conflicts パラメーターの使用は推奨されません。
パブリッシャー側のパブリケーション データベースまたはサブスクライバー側のサブスクリプション データベースに対して、sp_helpmergearticleconflicts を実行します。 特定のパブリケーションに属するアーティクルの競合テーブル情報のみが返されるようにするには、@publication に値を指定します。 これにより、競合を持つアーティクルに対応する競合テーブル情報が返されます。 目的のアーティクルに対応する source_object の値を確認します。 アーティクルに対応する conflict_table の値が NULL の場合、そのアーティクル内では削除競合のみが発生しています。
(省略可) 削除競合の競合情報を確認します。 手順 1. の centralized_conflicts および decentralized_conflicts の値に応じて、次のいずれかの操作を実行します。
パブリッシャー側のパブリケーション データベースに対して、sp_helpmergedeleteconflictrows を実行します。 手順 1. で確認した、競合が発生しているソース テーブルの名前を @source_object に指定します。 (省略可) 特定のパブリケーションの競合情報が返されるように制限するには、@publication に値を指定します。 これにより、パブリッシャーに格納されている削除競合の情報が返されます。
サブスクライバー側のサブスクリプション データベースに対して、sp_helpmergedeleteconflictrows を実行します。 手順 1. で確認した、競合が発生しているソース テーブルの名前を @source_object に指定します。 (省略可) 特定のパブリケーションの競合情報が返されるように制限するには、@publication に値を指定します。 これにより、サブスクライバーに格納されている削除競合の情報が返されます。