sp_changesubstatus (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例
更改现有订阅服务器的状态。 此存储过程在发布服务器上对发布数据库执行。
语法
sp_changesubstatus
[ [ @publication = ] N'publication' ]
[ , [ @article = ] N'article' ]
[ , [ @subscriber = ] N'subscriber' ]
, [ @status = ] N'status'
[ , [ @previous_status = ] N'previous_status' ]
[ , [ @destination_db = ] N'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 = ] N'optional_command_line' ]
[ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]
[ , [ @from_auto_sync = ] from_auto_sync ]
[ , [ @ignore_distributor = ] ignore_distributor ]
[ , [ @offloadagent = ] offloadagent ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @dts_package_name = ] N'dts_package_name' ]
[ , [ @dts_package_password = ] N'dts_package_password' ]
[ , [ @dts_package_location = ] dts_package_location ]
[ , [ @skipobjectactivation = ] skipobjectactivation ]
[ , [ @distribution_job_name = ] N'distribution_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @ignore_distributor_failure = ] ignore_distributor_failure ]
[ ; ]
参数
[ @publication = ] N'publication'
发布的名称。 @publication为 sysname,默认值为 %
. 如果未 指定@publication ,则所有发布都会受到影响。
[ @article = ] N'article'
项目的名称。 @article为 sysname,默认值为 %
. 该名称对发布必须是唯一的。 如果未 指定@article ,则所有项目都会受到影响。
[ @subscriber = ] N'subscriber'
要更改其状态的订阅服务器的名称。 @subscriber为 sysname,默认值为 %
. 如果未 指定@subscriber ,则会将所有订阅服务器的状态更改为指定项目。
[ @status = ] N'status'
表中的 syssubscriptions
订阅状态。 @status 是 sysname,可以是其中一个值。
值 | 说明 |
---|---|
active |
订阅服务器已被同步并且正在接收数据。 |
inactive |
存在订阅服务器项,但没有订阅。 |
subscribed |
订阅服务器正在请求数据,但尚未同步。 |
[ @previous_status = ] N'previous_status'
订阅的上一个状态。 @previous_status为 sysname,默认值为 NULL
. 此参数允许更改当前具有该状态的任何订阅,从而允许对特定订阅集使用组函数(例如,将所有活动订阅设置回去 subscribed
)。
[ @destination_db = ] N'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 |
Last |
NULL (默认值) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
@frequency_type使用的重复因子。 @frequency_recurrence_factor为 int,默认值为 NULL
.
[ @frequency_subday = ] frequency_subday
指定在定义的时间段内重新安排的频率(以分钟为单位)。 @frequency_subday 为 int,可以是以下值之一。
值 | 说明 |
---|---|
1 |
一次 |
2 |
Second |
4 |
Minute |
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 = ] N'optional_command_line'
可选的命令提示符。 @optional_command_line 为 nvarchar(4000),默认值为 NULL
.
[ @distribution_jobid = ] distribution_jobid OUTPUT
将订阅状态从非活动更改为活动时,订阅的分发服务器上分发代理的作业 ID。 在其他情况下,未定义它。 如果在对此存储过程的单个调用中涉及多个分发代理,则不会定义结果。 @distribution_jobid是二进制类型的 OUTPUT 参数(16)。
[ @from_auto_sync = ] from_auto_sync
标识为仅供参考。 不支持。 不保证以后的兼容性。
[ @ignore_distributor = ] ignore_distributor
标识为仅供参考。 不支持。 不保证以后的兼容性。
[ @offloadagent = ] offloadagent
此参数已弃用,并维护脚本的向后兼容性。 将 @offloadagent 设置为非 0
生成错误的值。
[ @offloadserver = ] N'offloadserver'
此参数已弃用,并维护脚本的向后兼容性。 将 @offloadserver 设置为任何非 NULL 值将生成错误。
[ @dts_package_name = ] N'dts_package_name'
指定 Data Transformation Services (DTS) 包的名称。 @dts_package_name为 sysname,默认值为 NULL
. 例如,对于命名 DTSPub_Package
的包,需要指定 @dts_package_name = N'DTSPub_Package'
。
[ @dts_package_password = ] N'dts_package_password'
指定包上的密码。 @dts_package_password为 nvarchar(524),默认值NULL
指定密码属性将保持不变。
注意
DTS 包必须具有密码。
[ @dts_package_location = ] dts_package_location
指定包位置。 @dts_package_location为 int,默认值为 0
.
- 如果
0
包位置位于分发服务器上。 - 如果
1
包位置位于订阅服务器上。
包的位置可以是 distributor
或 subscriber
。
[ @skipobjectactivation = ] skipobjectactivation
标识为仅供参考。 不支持。 不保证以后的兼容性。
[ @distribution_job_name = ] N'distribution_job_name'
分发作业的名称。 @distribution_job_name为 sysname,默认值为 NULL
.
[ @publisher = ] N'publisher'
指定非 SQL Server 发布服务器。 @publisher为 sysname,默认值为 NULL
.
更改 SQL Server 发布服务器上的项目属性时,不应使用@publisher。
[ @ignore_distributor_failure = ] ignore_distributor_failure
标识为仅供参考。 不支持。 不保证以后的兼容性。
返回代码值
0
(成功)或 1
(失败)。
注解
sp_changesubstatus
用于快照复制和事务复制。
sp_changesubstatus
更改表中订阅服务器 syssubscriptions
的状态,状态已更改。 如果需要,它会更新表中的项目状态 sysarticles
以指示活动或非活动状态。 如果需要,它将复制表的 sysobjects
复制标志设置为复制表的打开或关闭。
权限
只有 sysadmin 固定服务器角色的成员、db_owner固定数据库角色或订阅的创建者才能执行sp_changesubstatus
。