sp_changearticle (Transact-SQL)
更新: 2006 年 4 月 14 日
變更交易式或快照式發行集中之發行項的屬性。這個預存程序執行於發行集資料庫的發行者端。
語法
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'
這是包含發行項之發行集的名稱。publication 是 sysname,沒有預設值。
- [ @article = ] 'article'
這是要變更其屬性的發行項名稱。article 是 sysname,沒有預設值。
- [ @property=] 'property'
這是要變更的發行項屬性。property 是 nvarchar(100)。
[ @value=] 'value'
這是發行項屬性的新值。value 是 nvarchar(255)。下表描述發行項的屬性及這些屬性的值。
屬性
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
認可這個預存程序所採取的動作可能使現有的快照集失效。force_invalidate_snapshot 是 bit,預設值是 0。0 指定發行項的變更不會使快照集失效。如果預存程序偵測到變更需要新的快照集,就會發生錯誤,且不會進行任何變更。
1 指定發行項的變更可能使快照集失效,如果有現有的訂閱需要新的快照集,便提供要標示為已棄用之現有快照集的權限,此時會產生新的快照集。
請參閱「備註」一節,以了解在變更時需要產生新快照集的屬性。
[ **@force_reinit_subscription=]**force_reinit_subscription
認可這個預存程序所採取的動作可能需要重新初始化現有的訂閱。force_reinit_subscription 是 bit,預設值是 0。0 指定發行項的變更不會使訂閱重新初始化。如果預存程序偵測到變更需要重新初始化現有的訂閱,就會發生錯誤,且不會進行任何變更。
1 指定發行項的變更會使現有的訂閱重新初始化,且會提供將發生之訂閱重新初始化的權限。
請參閱「備註」一節,以了解在變更時需要重新初始化所有現有的訂閱之屬性。
[ @publisher= ] 'publisher'
指定非 SQL Server 發行者。publisher 是 sysname,預設值是 NULL。附註: 當在 SQL Server 發行者上變更發行項屬性時,不應使用 publisher。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_changearticle 用於快照式複寫和交易式複寫中。
當發行項屬於支援點對點交易式複寫的發行集時,您只能變更 description、ins_cmd、upd_cmd 和 del_cmd 屬性。
變更下列任何屬性都需要產生新的快照集,而且您必須指定值 1 給 force_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 來變更發行項,並不需要卸除再重新建立整個發行集。
附註: |
---|
當變更 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 |
0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 |
0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 |
serialized proc exec |
0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 |
0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 |
proc schema only |
0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 |
0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 |
view schema only |
0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000 和 0x80000000 |
0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000 和 0x80000000 |
func schema only |
0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 |
0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 |
indexed view schema only |
0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000 和 0x80000000 |
0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000 和 0x80000000 |
附註: |
---|
如果是佇列更新發行集,必須啟用 0x80 的 schema_option 值。支援的非 SQL Server 發行集 schema_option 值如下:0x01、0x02、0x10、0x40、0x80、0x1000 和 0x4000。 |
權限
只有系統管理員 (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)
變更發行集與發行項屬性
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|