如果訂閱未在指定的 保留期間內同步處理,則可以停用或到期。 所發生的動作取決於複寫的類型和超過的保留期間。
若要設定保留期間,請參閱 設定訂閱的到期期間、 設定交易式發行集的散發保留期間(SQL Server Management Studio)和 設定發行和散發。
交易複製
事務複製使用分發保留期限上限(sp_adddistributiondb(Transact-SQL) 的 @max_distretention 參數)和發布保留期限(sp_addpublication(Transact-SQL) 的 @retention 參數):
如果訂閱未能在最大散發保留期間內(預設為 72 小時)同步,且散發資料庫中有尚未傳遞至訂閱者的更改,那麼,在散發者上運行的清除作業將標記該訂閱為停用。 訂閱必須重新初始化。
如果訂閱未在發行集保留期間內同步處理(預設值為 336 小時),訂閱將會過期,並由發行者上執行的 過期訂閱清除 作業卸除。 訂閱必須重新建立並同步處理。
如果推送訂閱到期,則會被完全移除,但拉取訂閱則不會。 您必須清除訂閱者端的提取訂閱。 如需詳細資訊,請參閱 刪除提取訂閱。
合併複製
合併式復寫使用發行集保留期間(sp_addmergepublication(Transact-SQL)的@retention和@retention_period_unit參數)。 訂用帳戶到期時,必須重新初始化,因為已移除訂閱的元數據。 未重新初始化的訂閱會由發行者上執行的 過期訂閱清除 作業卸除。 根據預設,此作業每天執行;它會移除所有未同步處理的推送訂閱,這些訂閱的同步時間超過發行集保留期間的兩倍。 例如:
如果發行集的保留期間為14天,如果訂閱在14天內未同步處理,則訂閱可能會到期。
如果發行者執行 SQL Server 2005 或更新版本,而且訂閱的代理程式來自 SQL Server 2005 或更新版本,則訂閱只會在該訂閱分割區中的數據變更時過期。 例如,假設訂閱者只接收德國客戶的客戶數據。 如果保留期間設定為 14 天,則訂閱只會在過去 14 天內變更德國客戶數據時,於第 14 天到期。
在上次同步後的 14 天至 27 天之間,訂閱可以重新初始化。
在上次同步處理後 28 天,訂用帳戶會由過期訂用帳戶清除作業卸除。 如果推送訂閱到期,則會被完全移除,但拉取訂閱則不會。 您必須清除訂閱者端的提取訂閱。 如需詳細資訊,請參閱 刪除提取訂閱。
設定合併式發行集保留期間的考量因素
設定合併式發行集的保留期間時,請記住下列考慮:
合併發行的保留期間有 24 小時的寬限期,以方便不同時區的訂閱者。 例如,如果您設定一天的保留期限,則實際的保留期間為 48 小時。
合併式複寫元數據的清除取決於發行集保留期間:
在達到保留期間之前,復寫無法清除發行集和訂閱資料庫中的元數據。 請小心指定保留期間的高值,因為它可能會對複寫效能造成負面影響。 如果可以可靠地預測所有訂閱者在此期間會定期同步,建議您使用較低的設定。
您可以指定訂閱永遠不會過期( @retention的值為 0),但強烈建議您不要使用此值,因為無法清除元數據。
任何重新發行者的保留期限都必須設定為等於或小於原始發行者所設定的保留期限。 您也應該對所有出版者及其備用同步夥伴使用相同的發佈保留值。 使用不同的值可能會導致非聚合。 如果您需要變更發布保留值,請重新初始化訂閱者,以避免數據不一致。
如果在清除之後增加發行集保留期限,而且訂閱會嘗試與發行者合併(已刪除元數據),訂閱將不會因為保留值增加而過期。 不過,發行者因沒有足夠的元數據,無法下載同步至訂閱者的變更,這會導致同步不一致的問題。