Transact-SQL 参考

sp_changesubstatus

更改现有订阅服务器的状态。此存储过程在发布服务器的发布数据库上执行。

语法

sp_changesubstatus [ [ @publication = ] 'publication' ]
    [ , [ @article = ] 'article' ]
    [ , [ @subscriber = ] 'subscriber' ]
    , [ @status = ] 'status'
    [ , [ @previous_status = ] 'previous_status' ]
    [ , [ @destination_db = ] 'destination_db' ]
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @optional_command_line = ] 'optional_command_line' ]
    [ , [ @distribution_jobid = ] distribution_jobid ]
    [ , [ @from_auto_sync = ] from_auto_sync ]
    [ , [ @ignore_distributor = ] ignore_distributor ]
    [ , [ @offloadagent = ] remote_agent_activation ]
    [ , [ @offloadserver = ] 'remote_agent_server_name' ]
    [ , [ @dts_package_name = ] 'dts_package_name' ]
    [ , [ @dts_package_password = ] 'dts_package_password' ]
    [ , [ @dts_package_location = ] dts_package_location ]
    [ , [ @schemastabilityonly = ] schema_stability_only ]
    [ , [ @distribution_job_name = ] 'distribution_job_name' ]

参数

[@publication =] 'publication'

是发布名。publication 的数据类型为 sysname,默认设置为 %。如果未指定 publication,则表示所有发布。

[@article =] 'article'

是项目名。该名称对于发布必须唯一。article 的数据类型为 sysname,默认设置为 %。如果未指定 article,则表示所有项目。

[@subscriber =] 'subscriber'

是要更改其状态的订阅服务器名。subscriber 的数据类型为 sysname,默认设置为 %。如果未指定 subscriber,则所有订阅服务器的状态都将更改为指定的项目。

[@status =] 'status'

syssubscriptions 表中的订阅状态。status 的数据类型为 sysname,没有默认设置,可以是下列值之一。

描述
active 订阅服务器已进行同步处理且正接收数据。
inactive 没有订阅但存在订阅服务器项。
subscribed 订阅服务器正请求数据,但尚未进行同步处理。

[@previous_status =] 'previous_status'

是订阅的前一个状态。previous_status 的数据类型为 sysname,默认设置为 NULL。该参数使您得以更改当前具有该状态的任何订阅,因此允许在特定的订阅集上执行分组功能(例如,将所有活动订阅设置回 subscribed 状态)。

[@destination_db =] 'destination_db'

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

[@frequency_type =] frequency_type

是调度分发任务所使用的频率。frequency_type 的数据类型为 int,默认设置为 NULL。如果没有为 frequency_type 提供任何值,则 sp_changesubstatus 使用 sp_addsubscriber 所使用的 frequency_type 值。

[@frequency_interval =] frequency_interval

是应用于 frequency_type 所设置频率的值。frequency_interval 的数据类型为 int,默认设置为 NULL。

[@frequency_relative_interval =] frequency_relative_interval

是分发任务运行的日期。当 frequency_type 设置为 32(每月相对信息)时使用该参数。frequency_relative interval 的数据类型为 int,可以是下列值之一。

描述
1 第一个
2
4 第三个
8 第四个
16 最后一个
NULL(默认值)  

[@frequency_recurrence_factor =] frequency_recurrence_factor

frequency_type 使用的重复因子。frequency_recurrence_factor 的数据类型为 int,默认设置为 0。

[@frequency_subday =] frequency_subday

是在定义的周期内重新调度的频率(以分钟为单位)。frequency_subday 的数据类型为 int,可以是下列值之一。

描述
1 一次
2
4 分钟
8 小时
NULL(默认值)  

[@frequency_subday_interval =] frequency_subday_interval

frequency_subday 的间隔。frequency_subday_interval 的数据类型为 int,默认设置为 NULL。

[@active_start_time_of_day =] active_start_time_of_day

是第一次调度分发任务的时间,格式为 HHMMSS。active_start_time_of_day 的数据类型为 int,默认设置为 NULL。

[@active_end_time_of_day =] active_end_time_of_day

是停止调度分发任务的时间,格式为 HHMMSS。active_end_time_of_day 的数据类型为 int,默认设置为 NULL。

[@active_start_date =] active_start_date

是第一次调度分发任务的日期,格式为 YYYYMMDD。active_start_date 的数据类型为 int,默认设置为 NULL。

[@active_end_date =] active_end_date

是停止调度分发任务的日期,格式为 YYYYMMDD。active_end_date 的数据类型为 int,默认设置为 NULL。

[@optional_command_line =] 'optional_command_line'

是可选的命令提示符。optional_command_line 的数据类型为 nvarchar(4000),默认设置为 NULL。

[@distribution_jobid =] distribution_jobid

是当订阅状态从非活动更改为活动时,该订阅在分发服务器上的分发代理程序作业 ID。其它情况下,不定义该作业 ID。如果对此存储过程的单个调用中涉及多个分发代理程序,则不定义结果。distribution_jobid 的数据类型为 binary(16),默认设置为 NULL。

[@from_auto_sync =] from_auto_sync

仅限内部使用。

[@ignore_distributor =] ignore_distributor

仅限内部使用。

[@offloadagent = ] remote_agent_activation

指定可以远程地激活代理程序。remote_agent_activation 的数据类型为 bit,默认设置为 0。0 指定不能远程地激活代理程序。而 1 指定可以远程地激活代理程序,并且是在 remote_agent_server_name 所指定的远程计算机上激活。

[@offloadserver = ] 'remote_agent_server_name'

指定用于远程激活的服务器的网络名。remote_agent_server_name 的数据类型为 sysname,默认设置为 NULL。

[@dts_package_name = ] 'dts_package_name'

指定 DTS 包的名称。dts_package_name 的数据类型为 sysname,默认设置为 NULL。例如,若要指定 DTSPub_Package 包,则该参数将是 @dts_package_name = N'DTSPub_Package'。

[@dts_package_password = ] 'dts_package_password'

指定如果有密码,则密码在包上。dts_package_password 的数据类型为 sysname,默认设置为 NULL,它表示包上没有密码。

[@dts_package_location = ] dts_package_location

指定包的位置。dts_package_location 的数据类型为 int,默认设置为 0。如果是 0,则表示包位置是在分发服务器上。如果是 1,则表示包位置是在订阅服务器上。包的位置可以是 distributorsubscriber

[@schemastabilityonly = ] schema_stability_only

仅限内部使用。

[@distribution_job_name = ] 'distribution_job_name'

是分发作业的名称。distribution_job_name 的数据类型为 sysname,默认设置为 NULL。

返回代码值

0(成功)或 1(失败)

注释

sp_changesubstatus 用于快照复制和事务复制。

sp_changesubstatussyssubscriptions 表中用已更改的状态更改订阅服务器的状态。如有必要,它将更新 sysarticles 表中的项目状态以显示活动或非活动。如有必要,它将在 sysobjects 表中将已复制表的复制标志设置为 on 或 off。

权限

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

请参见

sp_addsubscription

sp_dropsubscription

sp_helpdistributor

sp_helpsubscription

系统存储过程