更改合并项目的属性。此存储过程在发布服务器的发布数据库上执行。
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),可以是下表中所列值之一。
下表描述项目的属性和这些属性的值。
属性 | 值 | 描述 |
---|---|---|
description | 项目的描述项。 | |
pre_creation_command | none:如果表已在订阅服务器上存在,则不采取任何操作。
drop:根据子集筛选中的 WHERE 子句发出删除命令。 delete:重新创建表之前先除去表。 truncate:与 delete 相同,但是删除页而非行。不要使用 WHERE 子句。 |
指定当应用快照时如果表存在于订阅服务器上则系统应采取的操作。 |
creation_script | 用于创建目标表的项目架构脚本的路径和名称。 | |
column_tracking | true 或 false | 列级跟踪的设置。true 打开列级跟踪。而 false 关闭列级跟踪并在行级保留冲突检测。如果表已在其它合并发布中发布,则列级跟踪必须与基于该表的现有项目所使用的值相同。该参数只专用于表项目。 |
article_resolver | 项目的自定义冲突解决程序。 | |
resolver_info | 用作自定义冲突解决程序的存储过程名。 | |
status | active 或 unsynced,或 | 项目状态。如果是 active,则表示发布表的初始处理脚本已运行。如果是 unsynced,则表示发布表的初始处理脚本在下一次运行快照代理程序时运行。 |
subset_filterclause | 用于指定水平筛选的 WHERE 子句。 | |
schema_option | 0x00:禁止快照代理程序编写脚本,并使用 creation_script 中提供的脚本。
0x01:生成对象创建(CREATE TABLE、CREATE PROCEDURE 等)。 0x10:生成对应的聚集索引。 0x20:将用户定义数据类型转换为基本数据类型。 0x40:生成对应的非聚集索引。 0x80:在主键上包含声明引用完整性。 0x100:如果已定义,则复制表项目上的用户触发器。 0x200:复制外键约束。如果引用的表不是发布的一部分,则将不复制已发布表上的所有外键约束。 0x400:复制检查约束。 0x800:复制默认值。 0x1000:复制列级排序规则。 0x2000:复制与已发布项目源对象关联的扩展的属性。 0x4000:如果在表项目上定义,则复制唯一键。 0x8000:使用 ALTER TABLE 语句将表项目上的主键和唯一键作为约束复制。 |
给定项目的架构生成选项位图。如果该值是 NULL,则系统将为该项目自动生成有效架构选项。"注释"中给出的表显示基于项目类型和复制类型的组合而选择的值。另外,并非所有的 @schema_option 值对每个复制类型和项目类型都有效。"注释"中给出的"有效架构选项"表显示可基于项目类型和复制类型的组合进行选择的有效架构选项。 |
destination_owner | 订阅数据库中的对象所有者名称(如果不是'dbo')。 | |
destination_object | 目的对象的新名称,'' 或 NULL。如果是 NULL 或 '',则将重置该值,使之等同于项目的 source_object 属性中的当前值。
仅对于合并存储过程、视图和 UDF 架构项目有效。修改合并表项目的 destination_object 将导致错误。 |
|
pub_identity_range | 如果项目将 auto_identity_range 设置为 true,则在发布服务器上的范围大小。仅应用于表项目。 | |
identity_range | 如果项目将 auto_identity_range 设置为 true,则为在订阅服务器上的范围大小。仅应用于表项目。 | |
threshold | 控制合并代理程序何时指派新标识范围的百分比值。如果使用了在阈值中指定的百分比值,合并代理程序将创建新的标识范围。当 auto_identity_range 设置为 true时,使用该属性。仅应用于表项目。 | |
verify_resolver_signature | 0 或 1 | 指定在合并复制中使用冲突解决程序之前是否验证数字签名的 bit 值。值 0 指定不验证签名。值 1 指定将验证签名以查看签名是否来自信任源。 |
allow_interactive_resolver | true 或 false | 在项目上启用或禁用交互式冲突解决程序的 bit 值。true 值启用在项目上使用交互式冲突解决程序;而 false 值禁用在项目上使用交互式冲突解决程序。 |
check_permissions | 0x00 值指定不会检查权限。
0x10 值指定在可上载 INSERT(已在订阅服务器上生成)之前,将在发布服务器上检查权限。 0x20 值指定上载 UPDATE(已在订阅服务器上生成)之前,将在发布服务器上检查权限。 0x40 值指定上载 DELETE(已在订阅服务器上生成)之前,将在发布服务器上检查权限。 |
当合并代理程序将更改应用于发布服务器时将验证表级权限的位图。如果合并进程所使用的发布服务器登录/用户帐户没有正确的表权限,则将无效更改记录为冲突。check_permissions 的数据类型为 int。 |
NULL(默认值) |
[@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 用于合并复制。
该表描述如果用户传递的是 NULL 值,则为存储过程选择的 @schema_option 默认值。默认值基于表的第一行中显示的复制类型和第一列中显示的项目类型。空单元表示无效的项目类型和复制类型组合,因而没有默认值。
项目类型 | 复制类型 |
---|---|
合并 | |
logbased | |
logbased manualfilter | |
logbased manualview | |
indexed view logbased | |
indexed view logbased manualfilter | |
indexed view logbased manualview | |
indexed view logbase manualboth | |
proc exec | |
serialized proc exec | |
proc schema only | 0x01 |
view schema only | 0x01 |
func schema only | 0x01 |
indexed view schema only | 0x01 |
table | 0xCFF1 |
有效架构选项表
项目类型 | 复制类型 |
---|---|
合并 | |
logbased | |
logbased manualfilter | |
logbased manualview | |
indexed view logbased | |
indexed view logbased manualfilter | |
indexed view logbased manualview | |
indexed view logbase manualboth | |
proc exec | 0x01 和 0x2000 |
serialized proc exec | 0x01 和 0x2000 |
proc schema only | 0x01 和 0x2000 |
view schema only | 0x01、0x0100 和 0x2000 |
func schema only | 0x01 和 0x2000 |
indexed view schema only | 0x01、0x10、0x040、0x0100 和 0x2000 |
table | 除 0x02 和 0x8000 外的所有选项 |
只有 sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员才能执行 sp_changemergearticle。