sp_changesubstatus (Transact-SQL)
更改现有订阅服务器的状态。 此存储过程在发布服务器的发布数据库中执行。
语法
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 ]
[ , [ @skipobjectactivation = ] skipobjectactivation
[ , [ @distribution_job_name= ] 'distribution_job_name' ]
[ , [ @publisher = ] 'publisher' ]
参数
[ @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_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,默认值为 NULL。[ @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。 在其他情况下,不定义该参数。 如果对此存储过程的单个调用中涉及多个分发代理,则不定义结果。distribution_jobid 的数据类型为 binary(16),默认值为 NULL。[ @from_auto_sync=] from_auto_sync
标识为仅供参考。不提供支持。不保证以后的兼容性。[ @ignore_distributor = ] ignore_distributor
标识为仅供参考。不提供支持。不保证以后的兼容性。[ @offloadagent= ] remote_agent_activation
注意 已不推荐使用远程代理激活,也不再支持该功能。 支持此参数只是为了让脚本能够向后兼容。 如果将 remote_agent_activation 设置为 0 以外的值,则将生成错误。
[ @offloadserver= ] 'remote_agent_server_name'
注意 已不推荐使用远程代理激活,也不再支持该功能。 支持此参数只是为了让脚本能够向后兼容。 如果将 remote_agent_server_name 设置为非 NULL 的值,则将生成错误。
[ @dts_package_name= ] 'dts_package_name'
指定 Data Transformation Services (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 包必须具有密码。
[ @dts_package_location= ] dts_package_location
指定包的位置。dts_package_location 的数据类型为 int,默认值为 0。 如果为 0,则包的位置在分发服务器上。 如果为 1,则包的位置在订阅服务器上。 包的位置可以是 distributor 或 subscriber。[ @skipobjectactivation= ] skipobjectactivation
标识为仅供参考。不提供支持。不保证以后的兼容性。[ @distribution_job_name= ] 'distribution_job_name'
分发作业的名称。distribution_job_name 的数据类型为 sysname,默认值为 NULL。[ @publisher= ] 'publisher'
指定一个非 Microsoft SQL Server 发布服务器。publisher 是 sysname,默认值为 NULL。注意 更改 SQL Server 发布服务器上的项目属性时,不应使用 publisher。
返回代码值
0(成功)或 1(失败)
注释
sp_changesubstatus 用于快照复制和事务复制。
sp_changesubstatus 用已更改的状态更改 syssubscriptions 表中的订阅服务器的状态。 如有必要,它将更新 sysarticles 表中的项目状态以指示活动或不活动状态。 如有必要,它将在 sysobjects 表中将已复制的表的复制标志设置为 on 或 off。
权限
只有 sysadmin 固定服务器角色的成员、db_owner 固定数据库角色的成员或订阅创建者才能执行 sp_changesubstatus。