sp_changesubstatus (Transact-SQL)
適用於:SQL ServerAzure 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,預設值為 %。 如果未 指定發行集 ,所有發行集都會受到影響。
[ @article = ] 'article'
這是發行項的名稱。 發行集必須是唯一的。 article 是 sysname,預設值為 %。 如果未 指定發行項 ,所有發行項都會受到影響。
[ @subscriber = ] 'subscriber'
這是要變更狀態的訂閱者名稱。subscriber 是 sysname,預設值為 %。 如果未 指定訂閱者,所有訂閱 者的狀態都會變更為指定的發行項。
[ @status = ] 'status'
這是 syssubscriptions 數據表中的訂用帳戶狀態。 status 是 sysname,沒有預設值,而且可以是下列其中一個值。
值 | Description |
---|---|
active | 訂閱者會同步處理並接收數據。 |
inactive | 訂閱者專案不存在,但沒有訂用帳戶。 |
訂閱 | 訂閱者要求數據,但尚未同步處理。 |
[ @previous_status = ] 'previous_status'
這是訂用帳戶的先前狀態。 previous_status為 sysname,預設值為 NULL。 此參數可讓您變更目前擁有該狀態的任何訂用帳戶,因此允許特定訂用帳戶集上的群組函式(例如,將所有作用中的訂用帳戶設定回 訂閱)。
[ @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 | 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,而且可以是下列其中一個值。
值 | 名稱 |
---|---|
1 | 一次 |
2 | Second |
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 = ] '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'
指定資料轉換服務 (DTS) 封裝的名稱。 dts_package_name是 sysname,預設值為 NULL。 例如,針對名為 DTSPub_Package 的套件,您會指定 @dts_package_name = N'DTSPub_Package'
。
[ @dts_package_password = ] 'dts_package_password'
指定封裝上的密碼。 dts_package_password是預設值為 NULL 的 sysname,指定密碼屬性維持不變。
注意
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'
指定非 Microsoft SQL Server 發行者。 publisher 是 sysname,預設值為 NULL。
注意
變更 SQL Server 發行者上的發行項屬性時,不應該使用 publisher 。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_changesubstatus用於快照式複寫和事務複製。
sp_changesubstatus變更狀態的 syssubscriptions 數據表中訂閱者的狀態。 如有需要,它會更新 sysarticles 數據表中的發行項狀態,以指出作用中或非使用中。 如有需要,它會在復寫數據表的 sysobjects 數據表中設定複寫旗標開啟或關閉。
權限
只有系統管理員固定伺服器角色、db_owner固定資料庫角色的成員,或訂用帳戶的建立者可以執行sp_changesubstatus。
另請參閱
sp_addsubscription (Transact-SQL)
sp_dropsubscription (Transact-SQL)
sp_helpdistributor (Transact-SQL)
sp_helpsubscription (Transact-SQL)
系統預存程序 (Transact-SQL)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應