如何:重新初始化訂閱 (複寫 Transact-SQL 程式設計)

個別訂閱可標示為要重新初始化,好讓下一次同步處理期間會套用新的快照集。可以使用複寫預存程序來以程式設計的方式重新初始化訂閱。使用的預存程序取決於訂閱的類型 (發送訂閱或提取訂閱) 以及訂閱所屬的發行集類型而定。

重新初始化交易式發行集的提取訂閱

  1. 在訂閱資料庫的訂閱者上,執行 sp_reinitpullsubscription (Transact-SQL)。指定 @publisher@publisher_db@publication。這樣會標示此訂閱,在下次執行散發代理程式時重新初始化。

  2. (選擇性) 在訂閱者上啟動散發代理程式,以同步處理此訂閱。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>。

重新初始化交易式發行集的發送訂閱

  1. 在發行者上,執行 sp_reinitsubscription (Transact-SQL)。指定 @publication@subscriber@destination_db。這樣會標示此訂閱,在下次執行散發代理程式時重新初始化。

  2. (選擇性) 在散發者上啟動散發代理程式,以同步處理此訂閱。如需詳細資訊,請參閱<如何:同步處理發送訂閱 (複寫程式設計)>。

重新初始化合併式發行集的提取訂閱

  1. 在訂閱資料庫的訂閱者上,執行 sp_reinitmergepullsubscription (Transact-SQL)。指定 @publisher@publisher_db@publication。若要在重新初始化發生之前從訂閱者上載變更,請針對 @upload_first 指定 true 的值。這樣會標示此訂閱,在下次執行合併代理程式時重新初始化。

    重要事項重要事項

    如果您加入、卸除或變更參數化篩選,就無法在重新初始化期間,將訂閱者上的暫止變更上載至發行者。如果您要上載暫止變更,請在變更篩選之前,同步處理所有訂閱。

  2. (選擇性) 在訂閱者上啟動合併代理程式,以同步處理此訂閱。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>。

重新初始化合併式發行集的發送訂閱

  1. 在發行者上,執行 sp_reinitmergesubscription (Transact-SQL)。指定 @publication@subscriber@subscriber_db。若要在重新初始化發生之前從訂閱者上載變更,請針對 @upload_first 指定 true 的值。這樣會標示此訂閱,在下次執行散發代理程式時重新初始化。

    重要事項重要事項

    如果您加入、卸除或變更參數化篩選,就無法在重新初始化期間,將訂閱者上的暫止變更上載至發行者。如果您要上載暫止變更,請在變更篩選之前,同步處理所有訂閱。

  2. (選擇性) 在散發者上啟動合併代理程式,以同步處理此訂閱。如需詳細資訊,請參閱<如何:同步處理發送訂閱 (複寫程式設計)>。

在建立新的合併式發行集時,設定重新初始化原則

  • 在發行集資料庫的發行者上,執行 sp_addmergepublication,針對 @automatic_reinitialization_policy 指定下列其中一個值:

    • 1 - 在發行集的變更需要自動重新初始化訂閱之前,從訂閱者上載變更。

    • 0 - 在發行集的變更需要自動重新初始化訂閱時,捨棄訂閱者上的變更。

    重要事項重要事項

    如果您加入、卸除或變更參數化篩選,就無法在重新初始化期間,將訂閱者上的暫止變更上載至發行者。如果您要上載暫止變更,請在變更篩選之前,同步處理所有訂閱。

    如需詳細資訊,請參閱<如何:建立發行集 (複寫 Transact-SQL 程式設計)>。

針對現有的合併式發行集變更重新初始化原則

  • 在發行集資料庫的發行者上,執行 sp_changemergepublication,針對 @property 指定 automatic_reinitialization_policy,並針對 @value 指定下列其中一個值:

    • 1 - 在發行集的變更需要自動重新初始化訂閱之前,從訂閱者上載變更。

    • 0 - 在發行集的變更需要自動重新初始化訂閱時,捨棄訂閱者上的變更。

    重要事項重要事項

    如果您加入、卸除或變更參數化篩選,就無法在重新初始化期間,將訂閱者上的暫止變更上載至發行者。如果您要上載暫止變更,請在變更篩選之前,同步處理所有訂閱。

    如需詳細資訊,請參閱<如何:檢視和修改發行集屬性 (複寫 Transact-SQL 程式設計)>。