如何重新初始化订阅(复制 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 编程)