訂閱到期與停用

適用於:SQL ServerAzure SQL 受控執行個體

如果訂閱在指定 「保留期限」內未執行同步處理,則可以停用訂閱或使訂閱過期。 發生的動作依複寫類型及超過的保留期限而定。

若要設定保留期限,請參閱設定訂閱的到期期限、設定交易式發行集的散發保留期限 (SQL Server Management Studio) 和設定發行與散發。

交易複製

異動複寫會使用散發保留期限上限 (sp_adddistributiondb (Transact-SQL) 的 @max_distretention 參數) 和發行集保留期限 (sp_addpublication (Transact-SQL) 的 @retention 參數):

  • 如果訂閱未在最大分配保留期限(預設為 72 小時)內同步,且分配資料庫中有變動未送達訂閱者,則該訂閱會被執行在發行商上的 「過期訂閱清理 工作」標記為停用。 你必須重新初始化訂閱。

  • 如果訂閱未在發行集保留期限內同步(預設為 336 小時),該訂閱就會到期,並由在 Publisher 上執行的 已到期訂閱清理 作業刪除。 (在 KB4014798 修正之前,該作業名為 發佈清除。)您必須重建並同步訂閱。

    如果推送訂閱過期,該訂閱會被完全刪除,但拉取訂閱則不會。 您必須在訂閱者端清理提取式訂閱。 如需詳細資訊,請參閱 Delete a Pull Subscription。

合併式複寫

合併式複寫會使用發行集保留期限(即 sp_addmergepublication (Transact-SQL) 的 @retention 和 @retention_period_unit 參數)。 當訂閱到期時,你必須重新初始化它,因為這個過程會移除訂閱的元資料。 在 Publisher 上執行的過期訂閱清理工作會移除未重新初始化的訂閱。 預設情況下,這個工作每天都會執行。 它會移除所有無法同步的推送訂閱,且保留期限是出版期限的兩倍。 例如:

  • 若出版物的保留期為14天,若未在14天內同步,訂閱可能會失效。

    如果 Publisher 運行的是 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),但請勿使用此值,因為無法清理中繼資料。

  • 將任一再出版商的保留期設為等於或低於原始 Publisher 設定的保留期。 此外,請對所有出版商及其替代同步夥伴使用相同的出版保留值。 使用不同數值可能導致不收斂。 若您需要變更發行集保留值,請重新初始化訂閱者,以避免資料無法聚合。

  • 如果你在清理後延長出版保留期,且訂閱嘗試與已刪除元資料的 Publisher 合併,訂閱不會因保留價值增加而失效。 然而,Publisher 沒有足夠的元資料來下載變更到訂閱者,導致不融合。