同步化程序可以是單向或雙向。本節介紹雙向同步化。雙向同步化程序有兩個步驟:
圖 2顯示使用者提出的變更如何在同步化期間被套用到來源資料庫。 圖中的號碼對應到其後的說明:
圖 3顯示來自來源表格的變更如何在同步化期間被套用到使用者行動裝置上的 DB2 Everyplace 表格。Sync Server 會將自使用者上一次同步化以來,所做的所有相關來源資料變更,傳送給使用者。Sync Server 只會傳送使用者所定期抄寫的變更資料。
圖中的號碼對應到其後的說明。
同步化可以由數個同步化階段作業所組成。 若您取消同步化程序並稍後重新啟動,Sync Server 會嘗試從第一個未完成的同步化階段作業恢復, 而不會從頭開始。
例如,假設您要求為一個定期抄寫同步化 100 筆記錄,另一個定期抄寫 50 筆。 若在您取消時第一個定期抄寫的 100 筆記錄已經同步化完成, 剩餘的 50 記錄將只會在您重新起始同步化時才會被同步化。 這是因為只有第一個同步化階段作業已完成。
若使用者在同步化階段作業期間取消同步化,那個特定階段作業中的記錄便都未被同步化。 若使用者順利將所有已變更的記錄從裝置傳送到伺服器, 但在伺服器回覆期間取消,則伺服器會在使用者重新連接至 Sync Server 時恢復回覆。
有時, 從屬站對 DB2 Everyplace Sync Server 所提出的變更會與其它從屬站之前所作的變更相衝突, 或會同時對來源表格進行變更。Sync Server 會在定期抄寫方式的每一個表格中, 追蹤每一筆記錄的版本。每一個從屬站都會同樣地被追蹤, 以維護每一個從屬站與每一個表格在最後一次同步化時的每一筆記錄的版本。此資訊可讓 Sync Server 決定從屬站是否要依照該橫列資料的已作廢版本來試著更新橫列。如果從屬站嘗試依照該橫列資料的已作廢版本來更新橫列,則更新會被拒絕。
衝突解決是發生在資料暫置於中層系統的鏡映表格時, 如圖 4中所示。這會在下一次抄寫循環時發生。 在該同步化期間內回應訊息傳回從屬站後, 才會偵測到由於從屬站更新所造成的衝突。 在下一次同步化時,才會將從屬站變更所造成的拒絕傳回從屬站。 如果從屬站變更是依據已作廢的記錄, 則該記錄的正確版本會在原始的同步化要求中傳回。
更新被拒的從屬站會收到被拒的記錄以及該記錄的更正版本。 被拒的記錄被記錄於從屬站的日誌中。 該記錄的更正版本則會取代從屬站 DB2 Everyplace 資料庫上原始的 (被拒的) 記錄。
當 DataPropagator 從中層引用變更的資料到來源資料庫時, 會發生其它類型的衝突。請參閱 DB2 Universal Database Replication 指南與參考手冊及 DB2 Universal Database Administration Guide,以取得如何管理及解決這些衝突的更多相關資訊。