sp_changemergearticle (Transact-SQL)

更新日期: 2006 年 4 月 14 日

更改合并项目的属性。此存储过程在发布服务器的发布数据库中执行。

主题链接图标Transact-SQL 语法约定

语法

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 以了解有关这些属性的其他信息。

更改下列属性需要生成新的快照,因而必须将 force_invalidate_snapshot 参数的值指定为 1

  • check_permissions
  • column_tracking
  • destination_owner
  • pre_creation_cmd
  • schema_option
  • subset_filterclause

更改下列属性需要重新初始化现有订阅,因而必须将 force_reinit_subscription 参数的值指定为 1

  • 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 确定)之间执行 & (位与) 运算。

有效架构选项表

下表描述了所允许的 schema_option值(具体取决于项目类型)。

项目类型 架构选项值

func schema only

0x010x2000

indexed view schema only

0x010x0400x01000x20000x400000x10000000x200000

proc schema only

0x010x2000

table

所有选项。

view schema only

0x010x0400x01000x20000x400000x10000000x200000

权限

只有 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)
更改发布和项目属性

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

更改的内容:
  • 更新了对 schema_option 属性的 0x20000000 值的说明。

2005 年 12 月 5 日

新增内容:
  • 记录了为 schema_option 参数设置 0x20 选项时的其他限制。
更改的内容:
  • 更新了有关表项目的默认架构选项值的信息。