sp_changearticle (Transact-SQL)
更新日期: 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。注意: 更改 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 更改项目,而不必除去整个发布后再重新创建发布。
注意: |
---|
更改 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 |
注意: |
---|
对于排队的更新发布,必须启用 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 日 |
|