更新日期: 2006 年 4 月 14 日
更改事务或快照发布中的项目属性。此存储过程在发布服务器的发布数据库中执行。
语法
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。.gif) 注意: 注意:- 更改 SQL Server 发布服务器上的项目属性时,不应使用 publisher。 
返回代码值
0(成功)或 1(失败)
备注
sp_changearticle 用于快照复制和事务性复制。
如果项目属于支持对等事务性复制的发布,则只能更改 description、ins_cmd、upd_cmd 和 del_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 更改项目,而不必除去整个发布后再重新创建发布。
| .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 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 | 
| serialized proc exec | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 | 
| proc schema only | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 | 
| view schema only | 0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000 和 0x80000000 | 0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000 和 0x80000000 | 
| func schema only | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 | 0x01、0x20、0x2000、0x400000、0x800000、0x2000000、0x8000000、0x10000000、0x20000000、0x40000000 和 0x80000000 | 
| indexed view schema only | 0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000 和 0x80000000 | 0x01、0x010、0x020、0x040、0x0100、0x2000、0x40000、0x100000、0x200000、0x400000、0x800000、0x2000000、0x8000000、0x40000000 和 0x80000000 | 
| .gif) 注意: | 
|---|
| 对于排队的更新发布,必须启用 schema_option 的值 0x80。非 SQL Server 发布的支持的 schema_option 值:0x01、0x02、0x10、0x40、0x80、0x1000 和 0x4000。 | 
权限
只有 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)
更改发布和项目属性
帮助和信息
更改历史记录
| 版本 | 历史记录 | 
|---|---|
| 2006 年 4 月 14 日 | 
 | 
| 2005 年 12 月 5 日 | 
 
 | 
.gif)