Transact-SQL 参考

sp_changearticle

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

语法

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

参数

[@publication =] 'publication'

是包含该项目的发布名。publication 的数据类型为 sysname,默认设置为 NULL。

[@article =] 'article'

是要更改其属性的项目名。article 的数据类型为 sysname,默认设置为 NULL。

[@property =] 'property'

是要更改的项目属性。property 的数据类型为 nvarchar(20)

[@value =] 'value'

是项目属性的新值。value 的数据类型为 nvarchar(255)

下表描述项目的属性和这些属性的值。

属性 描述
description   发布作业的新描述项。
sync_object   用于生成同步输出文件的表或视图的名称。默认设置为 NULL。
type logbased(默认值)= 基于日志的项目。
Logbased manualfilter = 带手工筛选的基于日志的项目。
Logbased manualview = 带手工视图的基于日志的项目。
Logbased manualboth = 带手工筛选和手工视图的基于日志的项目。
项目类型。
ins_cmd   要执行的 INSERT 语句,否则从日志构造。
del_cmd   要执行的 DELETE 语句,否则从日志构造。
upd_cmd   要执行的 UPDATE 语句,否则从日志构造。
filter   要用于筛选表(水平筛选)的新存储过程。默认设置为 NULL。
dest_table   新目的表。
dest_object   为向后兼容性而提供。使用 dest_table
creation_script   用于创建目标表的项目架构脚本的路径和名称。默认设置为 NULL。
pre_creation_cmd 可以在应用同步之前除去、删除或截断目的表的预创建命令。
none 不使用命令。
drop 除去目的表。
delete 删除目的表。
truncate 截断目的表。
status 指定属性的新状态。
include column names 在复制 INSERT 语句中允许有列名。
no column names 在复制 INSERT 语句中不允许有列名。
owner qualified 允许使用所有者限定的表名。
not owner qualified 允许使用不是所有者限定的表名。
string literals | parameters 指定日志读取器生成的命令是使用标准字符串文字命令格式还是新参数化命令格式。
schema_option 指定给定项目的架构生成选项位图。schema_option 的数据类型为 binary(8)。如果该值是 NULL,则系统将为该项目自动生成有效架构选项。"注释"中给出的表显示基于项目类型和复制类型的组合而选择的值。另外,并非所有的 schema_option 值对每个复制类型和项目类型都有效。"注释"中给出的"有效架构选项"表显示可基于项目类型和复制类型的组合进行选择的有效架构选项。
0x00 禁用由初始同步提供的脚本并使用提供的创建脚本。
0x01 生成对象创建(CREATE TABLE、CREATE PROCEDURE 等)。
0x10 生成对应的聚集索引。
0x20 将用户定义数据类型转换为基本数据类型。
0x40 生成对应的非聚集索引。
0x80 在主键上包含声明引用完整性。
  0x100 如果已定义,则复制表项目上的用户触发器。
  0x200 复制外键约束。如果引用的表不是发布的一部分,则将不复制已发布表上的所有外键约束。
  0x400 复制检查约束。
  0x800 复制默认值。
  0x1000 复制列级排序规则。
  0x2000 复制与已发布项目源对象关联的扩展的属性。
  0x4000 如果在表项目上定义了唯一键,则复制唯一键。
  0x8000 使用 ALTER TABLE 语句将表项目上的主键和唯一键作为约束复制。
destination_owner destination_owner 目的对象所有者的名称。
NULL 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_changearticle 用于快照复制和事务复制。

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

该表描述如果用户传递的是 NULL 值,则为存储过程选择的 @schema_option 默认值。默认值基于表的第一行中显示的复制类型和第一列中显示的项目类型。空单元表示无效的项目类型和复制类型对,因而没有默认值。

项目类型 复制类型
  事务复制 快照复制
logbased 0xF3 0x71
logbased manualfilter 0xF3 0x71
logbased manualview 0xF3 0x71
indexed view logbased 0xF3 0x71
indexed view logbased manualfilter 0xF3 0x71
indexed view logbased manualview 0xF3 0x71
indexed view logbase manualboth 0xF3 0x71
proc exec 0x01 0x01
serialized proc exec 0x01 0x01
proc schema only 0x01 0x01
view schema only 0x01 0x01
func schema only 0x01 0x01
indexed view schema only 0x01 0x01
table    

说明  如果为排队更新启用了发布,则 @schema_option 值 0x8000 和 0x0080 将被添加到下表所显示的默认值中。

有效架构选项表

项目类型 复制类型
  事务复制 快照复制
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 和 0x2000 0x01 和 0x2000
serialized proc exec 0x01 和 0x2000 0x01 和 0x2000
proc schema only 0x01 和 0x2000 0x01 和 0x2000
view schema only 0x01、0x0100 和 0x2000 0x01、0x0100 和 0x2000
func schema only 0x01 和 0x2000 0x01 和 0x2000
indexed view schema only 0x01、0x10、0x040、0x0100 和 0x2000 0x01、0x10、0x040、0x0100 和 0x2000
table    

说明  对于排队更新发布,必须启用 @schema_option 值 0x8000 和 0x80。

权限

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

请参见

sp_addarticle

sp_addpublication

sp_articlecolumn

sp_changepublication

sp_droparticle

sp_droppublication

sp_enumfullsubscribers

sp_helparticle

sp_helparticlecolumns

sp_helppublication

系统存储过程