sp_changemergearticle (Transact-SQL)
更新: 2006 年 4 月 14 日
變更合併發行項的屬性。這個預存程序執行於發行集資料庫的發行者端。
語法
sp_changemergearticle [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @property = ] 'property' ]
[ , [ @value = ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
引數
- [ @publication=] 'publication'
這是發行項所在發行集的名稱。publication 是 sysname,沒有預設值。
- [ @article=] 'article'
這是要變更的發行項名稱。article 是 sysname,沒有預設值。
- [ @property=] 'property'
這是給定發行項和發行集要變更的屬性。property 是 nvarchar(30),它可以是下表列出的值之一。
[ @value=] 'value'
這是指定屬性的新值。value 是 nvarchar(1000),它可以是下表列出的值之一。下表描述發行項的屬性及這些屬性的值。
屬性
[ @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 表示合併發行項的變更會使現有的訂閱重新初始化,且會提供將發生之訂閱重新初始化的權限。
請參閱<備註>一節,以瞭解在變更時需要重新初始化所有現有的訂閱之屬性。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_changemergearticle 用於合併式複寫中。
由於 sp_changemergearticle 是用來變更發行項屬性,這些發行項屬性開始時是利用 sp_addmergearticle 所指定的,因此,如需這些屬性的其他資訊,請參閱<sp_addmergearticle>。
變更下列屬性需要產生新的快照集,而且您必須指定值 1 給 force_invalidate_snapshot 參數:
- check_permissions
- column_tracking
- destination_owner
- pre_creation_cmd
- schema_options
- subset_filterclause
變更下列屬性需要重新初始化現有的訂閱,而且您必須指定值 1 給 force_reinit_subscription 參數:
- check_permissions
- column_tracking
- destination_owner
- subscriber_upload_options
- subset_filterclause
當 partition_options 指定的值是 3 時,每當合併代理程式執行時,都會清除中繼資料,資料分割快照集也會到期得更快。當使用這個選項時,您應該考慮啟用訂閱者要求的資料分割快照集。如需詳細資訊,請參閱<含參數化篩選之合併式發行集的快照集>。
當設定 column_tracking 屬性時,如果資料表已發行在其他合併式發行集中,資料行追蹤就必須與依據這份資料表的現有發行項所用的值相同。這個參數只適用於資料表發行項。
如果多個發行集根據相同的基礎資料表來發行發行項,變更 delete_tracking 屬性或發行項的 compensate_for_errors 屬性,會使基於相同資料表的其他發行項也進行相同的變更。
如果合併處理序所使用的發行者登入/使用者帳戶並沒有正確的資料表權限,就會將無效的變更記錄為衝突。
當變更 schema_option 的值時,系統不會執行位元更新。這表示當您利用 sp_changemergearticle 來設定 schema_option 時,可能會關閉現有的位元設定。若要保留現有的設定,應該在您設定的值和 schema_option 目前的值 (可以執行 sp_helpmergearticle 來判斷它的值) 之間執行 & (位元 AND)。
有效的結構描述選項表
下表描述允許使用的 schema_option 值,這會隨著發行項類型而不同。
發行項類型 | 結構描述選項值 |
---|---|
func schema only |
0x01 和 0x2000 |
indexed view schema only |
0x01、0x040、0x0100、0x2000、0x40000、0x1000000 和 0x200000 |
proc schema only |
0x01 和 0x2000 |
table |
所有選項。 |
view schema only |
0x01、0x040、0x0100、0x2000、0x40000、0x1000000 和 0x200000 |
權限
只有系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,才能夠執行 sp_changemergearticle。
範例
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';
-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks]
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property = N'column_tracking',
@value = N'true',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
請參閱
參考
sp_addmergearticle (Transact-SQL)
sp_dropmergearticle (Transact-SQL)
sp_helpmergearticle (Transact-SQL)
複寫預存程序 (Transact-SQL)
其他資源
How to: View and Modify Article Properties (Replication Transact-SQL Programming)
變更發行集與發行項屬性
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|