sp_changesubstatus (Transact-SQL)

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

主题链接图标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,则包的位置在订阅服务器上。 包的位置可以是 distributorsubscriber

  • [ @skipobjectactivation= ] skipobjectactivation
    标识为仅供参考。 不提供支持。 不保证以后的兼容性。

  • [ @distribution_job_name= ] 'distribution_job_name'
    分发作业的名称。distribution_job_name 的数据类型为 sysname,默认值为 NULL。

  • [ @publisher= ] 'publisher'
    指定一个非 MicrosoftSQL Server 发布服务器。publisher 是 sysname,默认值为 NULL。

    注意注意

    更改 SQL Server 发布服务器上的项目属性时,不应使用 publisher。

返回代码值

0(成功)或 1(失败)

注释

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

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

权限

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