sp_changearticle (Transact-SQL)

更新: 2006 年 4 月 14 日

變更交易式或快照式發行集中之發行項的屬性。這個預存程序執行於發行集資料庫的發行者端。

主題連結圖示Transact-SQL 語法慣例

語法

sp_changearticle [ [@publication= ] 'publication' ]
    [ , [ @article= ] 'article' ]
    [ , [ @property= ] 'property' ]
    [ , [ @value= ] 'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] 'publisher' ]

引數

  • [ @publication = ] 'publication'
    這是包含發行項之發行集的名稱。publicationsysname,沒有預設值。
  • [ @article = ] 'article'
    這是要變更其屬性的發行項名稱。articlesysname,沒有預設值。
  • [ @property=] 'property'
    這是要變更的發行項屬性。propertynvarchar(100)
  • [ @value=] 'value'
    這是發行項屬性的新值。valuenvarchar(255)

    下表描述發行項的屬性及這些屬性的值。

    屬性

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    認可這個預存程序所採取的動作可能使現有的快照集失效。force_invalidate_snapshotbit,預設值是 0

    0 指定發行項的變更不會使快照集失效。如果預存程序偵測到變更需要新的快照集,就會發生錯誤,且不會進行任何變更。

    1 指定發行項的變更可能使快照集失效,如果有現有的訂閱需要新的快照集,便提供要標示為已棄用之現有快照集的權限,此時會產生新的快照集。

    請參閱「備註」一節,以了解在變更時需要產生新快照集的屬性。

  • [ **@force_reinit_subscription=]**force_reinit_subscription
    認可這個預存程序所採取的動作可能需要重新初始化現有的訂閱。force_reinit_subscriptionbit,預設值是 0

    0 指定發行項的變更不會使訂閱重新初始化。如果預存程序偵測到變更需要重新初始化現有的訂閱,就會發生錯誤,且不會進行任何變更。

    1 指定發行項的變更會使現有的訂閱重新初始化,且會提供將發生之訂閱重新初始化的權限。

    請參閱「備註」一節,以了解在變更時需要重新初始化所有現有的訂閱之屬性。

  • [ @publisher= ] 'publisher'
    指定非 SQL Server 發行者。publishersysname,預設值是 NULL。

    ms175980.note(zh-tw,SQL.90).gif附註:
    當在 SQL Server 發行者上變更發行項屬性時,不應使用 publisher

傳回碼值

0 (成功) 或 1 (失敗)

備註

sp_changearticle 用於快照式複寫和交易式複寫中。

當發行項屬於支援點對點交易式複寫的發行集時,您只能變更 descriptionins_cmdupd_cmddel_cmd 屬性。

變更下列任何屬性都需要產生新的快照集,而且您必須指定值 1force_invalidate_snapshot 參數:

  • del_cmd
  • dest_table
  • destination_owner
  • ins_cmd
  • pre_creation_cmd
  • schema_options
  • upd_cmd

變更下列中的任何屬性都需要重新初始化現有的訂閱,但您必須指定 1 值給 force_reinit_subscription 參數。

  • del_cmd
  • dest_table
  • destination_owner
  • filter
  • ins_cmd
  • status
  • upd_cmd

在現有的發行集內,您可以利用 sp_changearticle 來變更發行項,並不需要卸除再重新建立整個發行集。

ms175980.note(zh-tw,SQL.90).gif附註:
當變更 schema_option 的值時,系統不會執行位元更新。這表示當您利用 sp_changearticle 來設定 schema_option 時,可能會關閉現有的位元設定。若要保留現有的設定,應該在您設定的值和 schema_option 目前的值 (可以執行 sp_helparticle 來判斷它的值) 之間執行 & (位元 AND)

有效結構描述選項

下表描述以複寫類型 (顯示在頂端) 和發行項類型 (顯示在第一個資料行之下) 為基礎,schema_option 所能使用的值。

發行項類型 複寫類型  

 

交易式

快照集

logbased

所有選項

0x02 以外的所有選項

logbased manualfilter

所有選項

0x02 以外的所有選項

logbased manualview

所有選項

0x02 以外的所有選項

indexed view logbased

所有選項

0x02 以外的所有選項

indexed view logbased manualfilter

所有選項

0x02 以外的所有選項

indexed view logbased manualview

所有選項

0x02 以外的所有選項

indexed view logbase manualboth

所有選項

0x02 以外的所有選項

proc exec

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

serialized proc exec

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

proc schema only

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

view schema only

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

func schema only

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

indexed view schema only

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

ms175980.note(zh-tw,SQL.90).gif附註:
如果是佇列更新發行集,必須啟用 0x80schema_option 值。支援的非 SQL Server 發行集 schema_option 值如下:0x010x020x100x400x800x10000x4000

權限

只有系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,才能夠執行 sp_changearticle

範例

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));

-- Change the schema options to replicate schema with XML.
USE [AdventureWorks]
EXEC sp_changearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'schema_option', 
  @value = @option,
  @force_invalidate_snapshot = 1;
GO

請參閱

參考

sp_addarticle (Transact-SQL)
sp_articlecolumn (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)

其他資源

How to: View and Modify Article Properties (Replication Transact-SQL Programming)
變更發行集與發行項屬性

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

變更的內容:
  • 更新 schema_option 屬性 0x20000000 值的描述。

2005 年 12 月 5 日

新增內容:
  • 新增 type 屬性的遺漏值。
  • 記載針對 schema_option 參數設定 0x20 選項時的其他限制。
變更的內容:
  • 釐清 type 屬性的描述。
  • 更正 property 參數的大小。