合并订阅已过期,必须上载更改
如果对合并发布的订阅过期,并希望将更改从订阅服务器上载到发布服务器,必须手动进行。
解释
合并复制用发布保持期(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 脚本覆盖目标(在此例中为发布服务器)上的所有非收敛数据,所以仅当从订阅服务器上载数据优先于在发布服务器上保留数据时才可使用此选项。
- 重新创建订阅,指定不应在订阅服务器上应用快照。有关详细信息,请参阅初始化合并订阅(不使用快照)。创建订阅后,为每个应上载到发布服务器的行执行“虚更新”**:可以执行手动虚更新,如: