訂閱逾期與停用
適用於:SQL Server Azure SQL 受控執行個體
如果訂閱在指定 「保留期限」內未執行同步處理,則可以停用訂閱或使訂閱過期。 發生的動作依複寫類型及超過的保留期限而定。
若要設定保留期限,請參閱設定訂閱的到期期限、設定交易式發行集的散發保留期限 (SQL Server Management Studio) 和設定發行與散發。
異動複寫
異動複寫使用最長散發保留期間 (sp_adddistributiondb (Transact-SQL) 的 @max_distretention
參數) 和發行集保留期間 (sp_addpublication (Transact-SQL) 的 @retention
參數):
若未於最長散發保留期間內 (預設值為 72 小時) 同步處理訂閱,且散發資料庫中有變更尚未傳遞至訂閱者,在散發者上執行的清除已過期的訂閱工作便會將該訂閱標記為停用。 訂閱必須重新初始化。
如果在發行集保留期限內 (預設值為 336 小時) 未同步處理訂閱,則訂閱將過期並由「發行者」上執行的 Expired subscription clean up 工作卸除。 (在 KB4014798 的修正前,該作業名稱為散發清除。) 該訂用帳戶必須重新建立並同步處理。
若發送訂閱已過期,會完全移除;但提取訂閱不會移除。 您必須在訂閱者端清除提取訂閱。 如需詳細資訊,請參閱 Delete a Pull Subscription。
合併式複寫
合併式複寫使用發行集保留期間 (sp_addmergepublication (Transact-SQL) 的 @retention
和 @retention_period_unit
參數)。 訂閱過期後,就必須重新初始化,因為訂閱的中繼資料已被移除。 未重新初始化的訂閱,由「發行者」上執行的 Expired subscription clean up 作業卸除。 依預設此作業每日執行,並移除所有尚未同步處理為兩倍發行保留期限的發送訂閱。 例如:
若發行的保留期限為 14 天,訂閱若未於 14 天內同步處理就會過期。
若發行者正在執行 SQL Server 2005 (9.x) 或更新版本,且訂閱的代理程式來自 SQL Server 2005 (9.x) 或更新版本,則訂閱只有在該訂閱分割資料變更時才會過期。 例如,假設訂閱者收到德國客戶的客戶資料。 若保留期限設定為 14 天,只有當德國客戶資料在過去 14 天變更,訂閱才會在第14 天過期。
從上一次同步處理後的第 14 到 27 天,訂閱皆可重新初始化。
在上一次同步處理後的 28 天,訂閱由 Expired subscription clean up 作業卸除。 若發送訂閱已過期,會完全移除;但提取訂閱不會移除。 您必須在訂閱者端清除提取訂閱。 如需詳細資訊,請參閱 Delete a Pull Subscription。
設定合併式發行集保留期限的考量
設定合併式發行集的保留期限時,請記住以下考量:
合併式發行集的保留期限具有 24 小時寬限期,可配合不同時區的「訂閱者」。 例如,如果您設定的保留期限是一天,實際的保留期限便是 48 小時。
合併式複寫中繼資料的清除相依於發行集保留期限:
複寫無法在發行集和訂閱資料庫中清除中繼資料,直到到達保留期限為止。 小心指定保留期限的高數值,因為此值可能對複寫效能產生負面影響。 若您能夠確實預測所有訂閱者都會在該時間週期內定期同步處理,建議您使用較低設定。
可以指定訂閱永不過期 (
@retention
的值為 0),但強烈建議您不要使用此值,因為中繼資料無法清除。
任何重新發行者的保留期限必須設定為等於或少於原始「發行者」的設定值。 對所有的「發行者」及其替代性同步處理夥伴,也應該使用相同的發行保留值。 使用不同值可能會導致非交集的情況。 若您需要變更發行集保留值,請重新初始化訂閱者,以避免資料無法聚合。
在清除之後,如果發行集保留期限加長,而訂閱嘗試與發行者 (已刪除中繼資料) 合併,則由於保留值增加而使訂閱不會過期。 不過,發行者則會因沒有足夠的中繼資料可以下載訂閱者的變更,而導致無法聚合。