Transact-SQL 参考

sp_reinitsubscription

将订阅标记为重新初始化。此存储过程在发布服务器的强制订阅上执行。

语法

 sp_reinitsubscription [ [ @publication = ] 'publication' ]
    [ , [ @article = ] 'article' ]
    , [ @subscriber = ] 'subscriber'
    [ , [ @destination_db = ] 'destination_db']
    [ , [ @for_schema_change = ] 'for_schema_change']

参数

[@publication =] 'publication'

是发布名。publication 的数据类型为 sysname,默认值为 all。

[@article =] 'article'

是项目名。article 的数据类型为 sysname,默认值为 all。对于即时更新发布,article 必须是 all;否则,此存储过程将跳过该发布并报告错误。

[@subscriber =] 'subscriber'

是订阅服务器名。subscriber 的数据类型为 sysname,无默认值。

[@destination_db =] 'destination_db'

是目的数据库名。destination_db 的数据类型为 sysname,默认值为 all。

[@for_schema_change =] 'for_schema_change'

表示发布数据库上的架构更改时是否重新初始化。for_schema_change 的数据类型为 bit,默认值为 0。如果为 0,则只要重新初始化整个发布而不只是其中的某些项目,就将重新激活允许即时更新的发布的活动订阅。这表示架构更改时将调用重新初始化。如果为 1,则直到运行快照代理程序时才重新激活活动订阅。

返回代码值

0(成功)或 1(失败)

注释

sp_reinitsubscription 用于事务复制。

对于自动应用初始快照和发布不允许可更新订阅的订阅,执行此存储过程之后必须运行快照代理程序,以便准备架构和大容量复制程序文件,并使分发代理程序随后能够重新同步订阅。

对于自动应用初始快照和发布允许可更新订阅的订阅,分发代理程序使用先前由快照代理程序创建的最新架构和大容量复制程序文件重新同步订阅。如果分发代理程序不忙,则在用户执行 sp_reinitsubscription 后,分发代理程序将立即重新同步订阅;否则,可能会在消息间隔(由分发代理程序命令提示符参数:MessageInterval 指定)后进行同步。

对于手工应用初始快照的订阅,由用户负责确保订阅服务器上的表与发布服务器上的表同步,并且在执行此存储过程前没有订阅服务器挂起的未送达复制命令。

若要使匿名订阅与发布重新同步,请将 all 或 NULL 作为 subscriber 传递。

事务复制支持项目级的订阅重新初始化。当项目被标记为重新初始化后,在下一个同步过程中将在订阅服务器上重新应用项目快照。但是,如果有相关的项目也由同一个订阅服务器订阅,那么在项目上重新应用快照可能会失败,除非发布中的相关项目在某些情况下也自动重新初始化:

权限

只有 sysadmin 固定服务器角色成员、db_owner 固定数据库角色成员或订阅创建者才能执行 sp_reinitsubscription

请参见

系统存储过程