合併訂閱已過期且必須上載變更
如果合併式發行集的訂閱過期,並且您要將變更從「訂閱者」上載至「發行者」,則必須手動執行此操作。
說明
合併式複寫使用發行集保留期限 (sp_addmergepublication (Transact-SQL) 的 @retention 和 @retention_period_unit 參數),判斷訂閱過期的時間。保留期限到達後,複寫才可以清除發行集和訂閱資料庫中的中繼資料。如需詳細資訊,請參閱<訂閱逾期與停用>。您無法從過期的訂閱上載變更,因為與「訂閱者」端資料列相關的中繼資料將不再會出現在「發行者」端。
使用者動作
若要將變更上載至發行者:
- 使用 tablediff 公用程式來判斷「發行者」與「訂閱者」之間存在差異的資料列。如需有關在複寫資料表上使用此公用程式的資訊,請參閱<How to: Compare Replicated Tables for Differences (Replication Programming)>。
- 手動或透過下列方法之一從「訂閱者」上載變更:
- 重新建立訂閱,指定不應在「訂閱者」端套用的快照集。如需詳細資訊,請參閱<不使用快照集初始化合併訂閱>。在建立訂閱後,為每個應上載至「發行者」的資料列執行*「虛擬更新」*:執行手動虛擬更新,例如:
UPDATE Sales.SalesOrderHeader SET RevisionNumber = RevisionNumber WHERE SalesOrderID > 4100
或為每個資料列執行 sp_mergedummyupdate。如需詳細資訊,請參閱<sp_mergedummyupdate (Transact-SQL)>。 - 使用 tablediff 公用程式產生 Transact-SQL 指令碼,以使資料聚合。如需詳細資訊,請參閱<tablediff 公用程式>。Transact-SQL 指令碼將覆寫目的地 (在此情況下為「發行者」) 上所有無法聚合的資料,因此,在從「訂閱者」上載的資料優先於「發行者」端保留資料的情況下,方可使用此選項。
- 重新建立訂閱,指定不應在「訂閱者」端套用的快照集。如需詳細資訊,請參閱<不使用快照集初始化合併訂閱>。在建立訂閱後,為每個應上載至「發行者」的資料列執行*「虛擬更新」*:執行手動虛擬更新,例如: