sp_resyncmergesubscription (Transact-SQL)
将合并订阅重新同步到指定的已知验证状态。这使您得以将订阅数据库强制集中或同步到特定的时点(如上次成功验证的时间)或指定的日期。使用此方法重新同步订阅时,不重新应用快照。此存储过程不用于快照复制订阅或事务复制订阅。此存储过程在发布服务器的发布数据库中或订阅服务器的订阅数据库中执行。
语法
sp_resyncmergesubscription [ [ @publisher = ] 'publisher' ]
[ , [ @publisher_db = ] 'publisher_db' ]
, [ @publication = ] 'publication'
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db = ] 'subscriber_db' ]
[ , [ @resync_type = ] resync_type ]
[ , [ @resync_date_str = ] resync_date_string ]
参数
- [ @publisher= ] 'publisher'
发布服务器的名称。publisher 的数据类型为 sysname,默认值为 NULL。如果存储过程在发布服务器上运行,则 NULL 值有效。如果在订阅服务器上运行该存储过程,则必须指定发布服务器。
- [ @publisher_db= ] 'publisher_db'
发布数据库的名称。publisher_db 的数据类型为 sysname,默认值为 NULL。如果存储过程在发布服务器的发布数据库中运行,则 NULL 值有效。如果在订阅服务器上运行该存储过程,则必须指定发布服务器。
- [ @publication= ] 'publication'
发布的名称。publication 的数据类型为 sysname,无默认值。
- [ @subscriber= ] 'subscriber'
订阅服务器的名称。subscriber 的数据类型为 sysname,默认值为 NULL。如果存储过程在订阅服务器上运行,则 NULL 值有效。如果在发布服务器上运行该存储过程,则必须指定订阅服务器。
- [ @subscriber_db = ] 'subscriber_db'
订阅数据库名称。subscription_db 的数据类型为 sysname,默认值为 NULL。如果存储过程在订阅服务器的订阅数据库中运行,则 NULL 值有效。如果在发布服务器上运行该存储过程,则必须指定订阅服务器。
[ @resync_type = ] resync_type
定义重新同步的开始时间。resync_type 的数据类型为 int,可以是下列值之一。值 说明 0
同步从初始快照后开始。这是占用资源最多的选项,因为自初始快照后的所有更改都重新应用于订阅服务器。
1
同步从上次成功验证后开始。自上次成功验证后发生的所有新的或未完成的生成都重新应用于订阅服务器。
2
同步从 resync_date_str 中给定的日期开始。该日期后发生的所有新的或未完成的生成都重新应用于订阅服务器。
- [ @resync_date_str=] resync_date_string
定义重新同步的开始日期。resync_date_string 的数据类型为 nvarchar(30),默认值为 NULL。当 resync_type 的值为 2 时,使用此参数。给定的日期转换为其等价的 datetime 值。
返回代码值
0(成功)或 1(失败)
备注
sp_resyncmergesubscription 用于合并复制。
值为 0 的 resync_type 参数(重新应用自初始快照后的所有更改)可能占用较多的资源,但与完全重新初始化相比,占用的资源也许非常少。例如,如果初始快照在一个月前传递,则该值将使得重新应用上个月的数据。如果初始快照包含 1 GB 的数据,但是在上个月开始的更改量包含 2 MB 的已更改数据,则重新应用数据与重新应用全部 1 GB 快照相比更有效。
权限
只有 sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员才能执行 sp_resyncmergesubscription。