標準自訂提供者設計的考量
與任何實際執行的資料存放區相同,涉入同步處理的資料存放區應該要定期備份。如果您必須從備份還原資料存放區,請考慮下列問題。
還原之後在資料存放區中進行的變更,可能不會傳播到其他複寫。
可能會發生此情況,因為用於指派版本給來源複寫上之變更的滴答計數,可能會造成變更偵測為過時。例如,假設某個來源提供者傳送變更到目的地提供者。目的地提供者便會套用變更並且更新其知識。從先前的備份還原來源複寫,而此備份包含舊版的滴答計數。會依據這個舊版的滴答計數指派版本給來源複寫的變更。再次執行同步處理。從來源提供者列舉的某些變更會擁有不應包含但已包含在目的地知識中的滴答計數,並因此偵測為過時並且不會套用到目的地複寫。
這種情況的建議解決方案是,每當從備份還原複寫時,將新的複寫識別碼指派給複寫。這樣做會將還原的複寫視為已經從備份之複寫接收所有資料的新複寫,並且將備份的複寫視為已經在同步處理社群中停用。同步處理社群中的其他複寫會由於新的複寫識別碼而沒有已還原複寫的知識,所以加入至已還原複寫的新項目會在同步處理期間正確傳送。
當中繼資料儲存服務用來儲存中繼資料時,變更複寫識別碼就需要進行一些額外的步驟。這些步驟包括:
實作提供者,讓它能夠在針對從備份還原所設計的特殊模式中運作。如果處於還原模式,目的地提供者就只會將中繼資料變更套用至目的地複寫。提供者不會偵測本機變更,而且不會將變更資料套用至複寫。
從備份還原複寫。從備份還原複寫之後,請建立兩個提供者執行個體。來源提供者代表包含舊複寫識別碼的已還原複寫,而目的地提供者則代表包含新複寫識別碼和新中繼資料存放區的已還原複寫。請讓目的地提供者處於還原模式。
從來源提供者同步處理至目的地提供者。這樣會根據新的複寫識別碼填入新的中繼資料存放區。
刪除舊的中繼資料存放區,並且使用新的中繼資料存放區和新的複寫識別碼來代表複寫。您現在就可以準備同步處理其餘同步處理社群。
如果先前已建立相同名稱的項目並且已經同步處理,在還原之後建立的新項目可能會造成名稱衝突。
例如,假設來源複寫還原檔案。來源提供者針對名為 "MyChange.txt" 的檔案傳送建立變更。從未包含 MyChange.txt 的舊版備份還原來源複寫。來源提供者會建立一個新的 MyChange.txt 檔案並且指派新的項目識別碼。再次執行同步處理。在傳送 MyChange.txt 時,目的地提供者會偵測到兩個 MyChange.txt 檔案之間有條件約束衝突,因為兩者的名稱相同,但是項目識別碼不同。
這種情況的建議解決方案是在提供者中處理條件約束衝突。如此一來,發生名稱衝突時,系統就會將它們回報成條件約束衝突,並且正確地進行解決。如需條件約束衝突的詳細資訊,請參閱偵測及解決條件約束衝突。