如何查看和修改项目属性(复制 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