共用方式為


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
    這是將訂閱狀態從非使用中改成使用中時,在散發者端之散發代理程式的作業識別碼。在其他情況下,不會加以定義。如果對這個預存程序的單一呼叫涉及多個散發代理程式,就不會定義結果。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,封裝位置則是在訂閱者端。封裝位置可以是散發者訂閱者

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