如何:設定點對點交易式複寫的衝突偵測 (複寫 Transact-SQL 程式設計)
點對點複寫包含在拓撲之間啟用衝突偵測的選項。如需詳細資訊,請參閱<點對點複寫中的衝突偵測>。
若要使用衝突偵測,所有節點都必須執行 SQL Server 2008 或更新版本,而且您必須針對所有節點啟用偵測。您可以在設定拓撲時或拓撲設定完成之後啟用衝突偵測。若要啟用現有拓撲的衝突偵測,您不需要停止該拓撲。不過,如果在所有節點都啟用衝突偵測之前發生了衝突變更,複寫便無法保證能夠偵測到這些衝突。如需有關如何設定拓撲的詳細資訊,請參閱<如何:設定點對點交易式複寫 (複寫 Transact-SQL 程式設計)>。
[!附註]
當您設定點對點複寫時,會為每個節點指定一個識別碼。此識別碼 (在拓撲的所有節點中必須是唯一的) 儲存在 MSpeer_originatorid_history 系統資料表的 originator_id 資料行中。如果從拓撲中移除某個節點,其識別碼仍然會保留在記錄資料表中。如果已移除的節點中有仍然在拓撲中進行複寫的變更,保留識別碼可防止發生假衝突。如果您要針對新節點重複使用識別碼,必須先從所有節點的 MSpeer_originatorid_history 資料表中手動刪除該識別碼。在您刪除節點的識別碼前,執行 sp_requestpeerresponse 以確認已複寫源自該節點的所有變更。
在拓撲組態設定期間啟用衝突偵測
當您使用 sp_addpublication 來建立每個節點的發行集時:
針對 @p2p\_conflictdetection 指定 true 值。
針對 @p2p\_originator\_id 指定非零的正整數。拓撲中不能使用這個識別碼。如需已經使用的識別碼清單,請執行 sp_help_peerconflictdetection。
針對 @p2p\_continue\_onconflict 指定一個值。我們建議您指定 false 值。如需詳細資訊,請參閱<點對點複寫中的衝突偵測>中的「處理衝突」。
在拓撲設定完成之後啟用衝突偵測
這些步驟會假設拓撲含有三個節點:A、B 和 C。在節點 A 上,執行 sp_configure_peerconflictdetection:
針對 @publication 指定發行集名稱,而針對 @action 指定 enable 值。
針對 @p2p\_originator\_id 指定非零的正整數。拓撲中不能使用這個識別碼。如需已經使用的識別碼清單,請執行 sp_help_peerconflictdetection。
針對 @continue\_onconflict 指定一個值。我們建議您指定 false 值。如需詳細資訊,請參閱<點對點複寫中的衝突偵測>中的「處理衝突」。
針對節點 B 和節點 C 重複步驟 1。
在其中一個節點上執行 sp_help_peerconflictdetection。針對 @publication 指定發行集名稱。檢查結果集,以便確保所有節點都已啟用衝突偵測,而且每個節點都具有唯一的訂閱者識別碼值。
停用衝突偵測
- 針對拓撲中的每個節點執行 sp_configure_peerconflictdetection。針對 @publication 指定發行集名稱,而針對 @action 指定 disable 值。