如何查看和修改项目属性(复制 Transact-SQL 编程)

可以使用复制存储过程以编程方式修改项目并返回它们的属性。 使用的存储过程取决于项目所属的发布的类型。

查看属于快照发布或事务发布的项目的属性

  1. 执行 sp_helparticle,为 @publication 参数指定发布名称,并为 @article 参数指定项目的名称。 如果未指定 @article,将返回该发布中所有项目的信息。

  2. 为表项目执行 sp_helparticlecolumns 可列出基表中可用的所有列。

修改属于快照发布或事务发布的项目的属性

  • 执行 sp_changearticle,指定 @property 参数中要更改的项目属性,并为 @value 参数中的此属性指定新值。

    注意注意

    如果更改需要生成新的快照,则还必须为 @force_invalidate_snapshot 指定值 1,并且如果更改需要初始化订阅服务器,则还必须为 @force_reinit_subscription 指定值 1。 有关更改时需要新快照或重新初始化的属性的详细信息,请参阅更改发布和项目属性

查看属于合并发布的项目的属性

  1. 执行 sp_helpmergearticle,为 @publication 参数指定发布的名称,并为 @article 参数指定项目的名称。 如果未指定这些参数,将返回为发布或发布服务器中所有项目的信息。

  2. 为表项目执行 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