如何:檢視合併式發行集的衝突資訊 (複寫 Transact-SQL 程式設計)

在合併式複寫中解決衝突時,遺失之資料列的資料會寫入衝突資料表。可以使用複寫預存程序來以程式設計的方式檢視此衝突資料。如需詳細資訊,請參閱<進階合併式複寫衝突偵測與解決>。

檢視所有衝突類型的衝突資訊和遺失的資料列資料

  1. 在發行集資料庫的發行者上,執行 sp_helpmergepublication。請注意結果集中下列資料行的值:

    • centralized_conflicts - 1 表示在發行者上儲存衝突資料列,0 則表示不會在發行者上儲存衝突資料列。

    • decentralized_conflicts - 1 表示在訂閱者上儲存衝突資料列,0 則表示不會在訂閱者上儲存衝突資料列。

      [!附註]

      合併式發行集的衝突記錄行為是使用 sp_addmergepublication@conflict_logging 參數所設定。@centralized_conflicts 參數的使用已被取代。

    下表描述這些資料行的值 (根據針對 @conflict_logging 所指定的值)。

    @conflict_logging value

    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。針對 @conflict_table 指定發行項的衝突資料表 (來自步驟 1)。(選擇性) 指定 @publication 的值,將傳回的衝突資訊限制為特定的發行集。這樣會傳回遺失之資料列的資料列資料和其他資訊。

    • 在訂閱資料庫的訂閱者上,執行 sp_helpmergeconflictrows。針對 @conflict_table 指定發行項的衝突資料表 (來自步驟 1)。這樣會傳回遺失之資料列的資料列資料和其他資訊。

只檢視刪除失敗時的衝突資訊

  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。針對 @source_object 指定衝突發生所在的來源資料表名稱 (來自步驟 1)。(選擇性) 指定 @publication 的值,將傳回的衝突資訊限制為特定的發行集。這樣會傳回儲存在發行者上的刪除衝突資訊。

    • 在訂閱資料庫的訂閱者上,執行 sp_helpmergedeleteconflictrows。針對 @source_object 指定衝突發生所在的來源資料表名稱 (來自步驟 1)。(選擇性) 指定 @publication 的值,將傳回的衝突資訊限制為特定的發行集。這樣會傳回儲存在訂閱者上的刪除衝突資訊。