如何:檢視和修改發行項屬性 (複寫 Transact-SQL 程式設計)
您可以使用複寫預存程序來以程式設計的方式修改發行項及傳回其屬性。使用哪些預存程序要依發行項所屬的發行集類型而定。
檢視屬於快照式或交易式發行集之發行項的屬性
執行 sp_helparticle,針對 @publication 參數指定發行集的名稱,並針對 @article 參數指定發行項的名稱。如果您不指定 @article,將會傳回發行集中所有發行項的資訊。
針對資料表發行項執行 sp_helparticlecolumns,以列出基底資料表中可用的所有資料行。
修改屬於快照式或交易式發行集之發行項的屬性
執行 sp_changearticle,在 @property 參數中指定變更的發行項屬性,並在 @value 參數中指定這個屬性的新值。
[!附註]
如果此變更需要產生新的快照集,您也必須針對 @force_invalidate_snapshot 指定 1 的值,而如果此變更需要重新初始化訂閱者,您也必須針對 @force_reinit_subscription 指定 1 的值。如需有關當屬性變更時需要新的快照集或重新初始化的詳細資訊,請參閱<變更發行集與發行項屬性>。
檢視屬於合併式發行集之發行項的屬性
執行 sp_helpmergearticle,針對 @publication 參數指定發行集的名稱,並針對 @article 參數指定發行項的名稱。如果您不指定這些參數,將會傳回發行集中或發行者上所有發行項的資訊。
針對資料表發行項執行 sp_helpmergearticlecolumn,以列出基底資料表中可用的所有資料行。
修改屬於合併式發行集之發行項的屬性
執行 sp_changemergearticle,在 @property 參數中指定變更的發行項屬性,並在 @value 參數中指定這個屬性的新值。
[!附註]
如果此變更需要產生新的快照集,您也必須針對 @force_invalidate_snapshot 指定 1 的值,而如果此變更需要重新初始化訂閱者,您也必須針對 @force_reinit_subscription 指定 1 的值。如需有關當屬性變更時需要新的快照集或重新初始化的詳細資訊,請參閱<變更發行集與發行項屬性>。
範例
這個交易式複寫範例會傳回已發行之發行項的屬性。
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksProductTran';
USE [AdventureWorks]
EXEC sp_helparticle
@publication = @publication;
GO
這個交易式複寫範例會變更已發行之發行項的結構描述選項。
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
這個合併式複寫範例會傳回已發行之發行項的屬性。
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
USE [AdventureWorks]
EXEC sp_helpmergearticle
@publication = @publication;
GO
這個合併式複寫範例會變更已發行之發行項的衝突偵測設定。
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