sp_changemergearticle (Transact-SQL)
更新日期: 2006 年 4 月 14 日
更改合并项目的属性。此存储过程在发布服务器的发布数据库中执行。
语法
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 |
0x01 和 0x2000 |
indexed view schema only |
0x01、0x040、0x0100、0x2000、0x40000、0x1000000 和 0x200000 |
proc schema only |
0x01 和 0x2000 |
table |
所有选项。 |
view schema only |
0x01、0x040、0x0100、0x2000、0x40000、0x1000000 和 0x200000 |
权限
只有 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)
更改发布和项目属性
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|