分享方式:


sp_changesubstatus (Transact-SQL)

適用於:SQL Server Azure SQL 受控執行個體

變更現有訂閱者的狀態。 這個預存程式會在發行集資料庫的發行者端執行。

Transact-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,而且可以是下列其中一個值。

Description
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,而且可以是下列其中一個值。

Description
1 First
2 Second
4 Third
8 第四個
16 姓氏
NULL (預設值)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

@frequency_type所使用的週期因數。 @frequency_recurrence_factor為 int,預設值為 NULL

[ @frequency_subday = ] frequency_subday

指定在定義期間重新排程的頻率,以分鐘為單位。 @frequency_subday為 int,而且可以是下列其中一個值。

Description
1 一次
2 第二個
4 Minute
8 Hour
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

將訂閱狀態從非使用中變更為作用中時,訂閱之散發者端 散發代理程式 的工作標識符。 在其他情況下,不會定義它。 如果此預存程式的單一呼叫涉及一個以上的 散發代理程式,則不會定義結果。 @distribution_jobid是 binary(16) 類型的 OUTPUT 參數。

[ @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'

指定資料轉換服務 (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為 ,則封裝位置位於訂閱者端。

封裝的位置可以是 distributorsubscriber

[ @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 設定複寫旗標開啟或關閉。

權限

只有系統管理員固定伺服器角色、db_owner固定資料庫角色的成員,或訂閱的建立者可以執行 sp_changesubstatus