sp_changearticle (Transact-SQL)

更新日期: 2006 年 4 月 14 日

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

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

语法

sp_changearticle [ [@publication= ] 'publication' ]
    [ , [ @article= ] 'article' ]
    [ , [ @property= ] 'property' ]
    [ , [ @value= ] 'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] 'publisher' ]

参数

  • [ @publication = ] 'publication'
    包含该项目的发布的名称。publication 的数据类型为 sysname,默认值是 NULL。
  • [ @article = ] 'article'
    将更改其属性的项目的名称。article 的数据类型是 sysname,默认值是 NULL。
  • [ @property=] 'property'
    要更改的项目属性。property 的数据类型为 nvarchar(100)
  • [ @value=] 'value'
    项目属性的新值。value 的数据类型为 nvarchar(255)

    下表说明项目的属性和这些属性的值。

    属性

  • [ @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 指定对项目所做的更改将导致重新初始化现有订阅,并授予重新初始化订阅所需的权限。

    有关在更改时需要重新初始化所有现有订阅的属性,请参阅“备注”部分。

  • [ @publisher= ] 'publisher'
    指定一个非 SQL Server 发布服务器。publisher 的数据类型为 sysname,默认值为 NULL。

    ms175980.note(zh-cn,SQL.90).gif注意:
    更改 SQL Server 发布服务器上的项目属性时,不应使用 publisher

返回代码值

0(成功)或 1(失败)

备注

sp_changearticle 用于快照复制和事务性复制。

如果项目属于支持对等事务性复制的发布,则只能更改 descriptionins_cmdupd_cmddel_cmd 属性。

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

  • del_cmd
  • dest_table
  • destination_owner
  • ins_cmd
  • pre_creation_cmd
  • schema_option
  • upd_cmd

更改以下任一属性均需重新初始化现有订阅,且必须将 force_reinit_subscription 参数的值指定为 1

  • del_cmd
  • dest_table
  • destination_owner
  • filter
  • ins_cmd
  • status
  • upd_cmd

在现有发布内,您可以使用 sp_changearticle 更改项目,而不必除去整个发布后再重新创建发布。

ms175980.note(zh-cn,SQL.90).gif注意:
更改 schema_option 的值时,系统不执行位更新。这表示使用 sp_changearticle 设置 schema_option 时,可能会关闭现有的位设置。若要保留现有的设置,则应在正在设置的值和 schema_option 的当前值(可通过执行 sp_helparticle 确定)之间执行 & (位与) 运算。

有效架构选项

下表按复制类型(在顶部横向显示)和项目类型(在第一列纵向显示)说明了 schema_option 允许的值。

项目类型 复制类型  

 

事务性项目

快照复制

logbased

所有选项

0x02 之外的所有选项

logbased manualfilter

所有选项

0x02 之外的所有选项

logbased manualview

所有选项

0x02 之外的所有选项

indexed view logbased

所有选项

0x02 之外的所有选项

indexed view logbased manualfilter

所有选项

0x02 之外的所有选项

indexed view logbased manualview

所有选项

0x02 之外的所有选项

indexed view logbase manualboth

所有选项

0x02 之外的所有选项

proc exec

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

serialized proc exec

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

proc schema only

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

view schema only

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

func schema only

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

indexed view schema only

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

ms175980.note(zh-cn,SQL.90).gif注意:
对于排队的更新发布,必须启用 schema_option 的值 0x80。非 SQL Server 发布的支持的 schema_option 值:0x010x020x100x400x800x10000x4000

权限

只有 sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员才能执行 sp_changearticle

示例

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

请参阅

参考

sp_addarticle (Transact-SQL)
sp_articlecolumn (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (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 日

新增内容:
  • 添加了 type 属性的缺少值。
  • 记录了为 schema_option 参数设置 0x20 选项时的其他限制。
已更改的内容:
  • 明确了 type 属性的说明。
  • 更正了 property 参数的大小。