sp_addarticle (Transact-SQL)

更新日期: 2006 年 4 月 14 日

创建项目并将其添加到发布中。此存储过程在发布服务器的发布数据库中执行。

主题链接图标Transact-SQL 语法约定

语法

sp_addarticle [ @publication = ] 'publication' 
        , [ @article = ] 'article' 
    [ , [ @source_table = ] 'source_table' ]
    [ , [ @destination_table = ] 'destination_table' ] 
    [ , [ @vertical_partition = ] 'vertical_partition' ] 
    [ , [ @type = ] 'type' ] 
    [ , [ @filter = ] 'filter' ] 
    [ , [ @sync_object= ] 'sync_object' ] 
    [ , [ @ins_cmd = ] 'ins_cmd' ] 
    [ , [ @del_cmd = ] 'del_cmd' ] 
    [ , [ @upd_cmd = ] 'upd_cmd' ] 
    [ , [ @creation_script = ] 'creation_script' ] 
    [ , [ @description = ] 'description' ] 
    [ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ] 
    [ , [ @filter_clause = ] 'filter_clause' ] 
    [ , [ @schema_option = ] schema_option ] 
    [ , [ @destination_owner = ] 'destination_owner' ] 
    [ , [ @status = ] status ] 
    [ , [ @source_owner = ] 'source_owner' ] 
    [ , [ @sync_object_owner = ] 'sync_object_owner' ] 
    [ , [ @filter_owner = ] 'filter_owner' ] 
    [ , [ @source_object = ] 'source_object' ] 
    [ , [ @artid = ] article_ID  OUTPUT ] 
    [ , [ @auto_identity_range = ] 'auto_identity_range' ] 
    [ , [ @pub_identity_range = ] pub_identity_range ] 
    [ , [ @identity_range = ] identity_range ] 
    [ , [ @threshold = ] threshold ] 
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @use_default_datatypes = ] use_default_datatypes
    [ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ] 

参数

  • [ @publication = ] 'publication'
    包含项目的发布的名称。该名称在数据库中必须是唯一的。publication 的数据类型为 sysname,无默认值。
  • [ @article = ] 'article'
    项目的名称。该名称在发布中必须是唯一的。article 的数据类型为 sysname,无默认值。
  • [ @source_table = ] 'source_table'
    该参数已不推荐使用,支持它是为了让脚本具有向后兼容性;请改用 source_objectOracle 发布服务器不支持该参数。
  • [ @destination_table = ] 'destination_table'
    source_table或存储过程不同的目标(订阅)表的名称。destination_table 的数据类型为 sysname,默认值为 NULL,这表示 source_table 等于 destination_table。**
  • [ @vertical_partition = ] 'vertical_partition'
    启用和禁用对表项目的列筛选。vertical_partition 的数据类型为 nchar(5),默认值为 FALSE。

    False 指示不进行垂直筛选,而发布所有列。

    true 将清除除声明的主键、没有默认值并且可为空的列以及唯一的键列以外的所有列。添加列时需要使用 sp_articlecolumn

  • [ @type = ] 'type'
    项目的类型。type 的数据类型为 sysname,可以是下列值之一:

    说明

    aggregate schema only

    仅具有架构的聚合函数。

    func schema only

    仅具有架构的函数。

    indexed view logbased

    基于日志的索引视图项目。Oracle 发布服务器不支持。对于此类型的项目,不需要单独发布基表。

    indexed view logbased manualboth

    具有手动筛选器和手动视图并且基于日志的索引视图项目。该选项需要指定 sync_objectfilter 参数。对于此类型的项目,不需要单独发布基表。Oracle 发布服务器不支持。

    indexed view logbased manualfilter

    具有手动筛选器并且基于日志的索引视图项目。该选项需要指定 sync_objectfilter 参数。对于此类型的项目,不需要单独发布基表。Oracle 发布服务器不支持。

    indexed view logbased manualview

    具有手动视图并且基于日志的索引视图项目。该选项需要指定 sync_object 参数。对于此类型的项目,不需要单独发布基表。Oracle 发布服务器不支持。

    indexed view schema only

    仅具有架构的索引视图。对于此类型的项目,还必须发布基表。

    logbased(默认值)

    基于日志的项目。

    logbased manualboth

    具有手动筛选器和手动视图并且基于日志的项目。该选项需要指定 sync_objectfilter 参数。Oracle 发布服务器不支持。

    logbased manualfilter

    具有手动筛选器并且基于日志的项目。该选项需要指定 sync_objectfilter 参数。Oracle 发布服务器不支持。

    logbased manualview

    具有手动视图并且基于日志的项目。该选项需要指定 sync_object 参数。Oracle 发布服务器不支持。

    proc exec

    将存储过程的执行复制到项目的所有订阅服务器。Oracle 发布服务器不支持。

    proc schema only

    仅具有架构的过程。Oracle 发布服务器不支持。

    serializable proc exec

    仅当存储过程在可串行事务上下文内执行时才复制存储过程的执行。Oracle 发布服务器不支持。

    view schema only

    仅具有架构的视图。Oracle 发布服务器不支持。使用此选项时,还必须发布基表。

  • [ @filter = ] 'filter'
    用来水平筛选表的存储过程(用 FOR REPLICATION 创建)。filter 的数据类型为 nvarchar(386),默认值为 NULL。必须手动执行 sp_articleviewsp_articlefilter 才能创建视图和筛选存储过程。如果不为 NULL,则不创建筛选过程(假定存储过程是手动创建的)。
  • [ @sync_object = ] 'sync_object'
    表或视图的名称,该表或视图用于生成用来表示该项目快照的数据文件。sync_object 的数据类型为 nvarchar(386),默认值为 NULL。如果为 NULL,则调用 sp_articleview 以自动创建用来生成输出文件的视图。这发生在用 sp_articlecolumn 添加任何列之后。如果不为 NULL,则不创建视图(假定视图是手动创建的)。
  • [ @ins_cmd = ] 'ins_cmd'
    复制该项目的插入时所使用的复制命令类型。ins_cmd 的数据类型为 nvarchar(255),可以是下列值之一:

    说明

    NONE

    不执行任何操作。

    CALL sp_MSins_table(默认值)

    - 或 -

    CALL custom_stored_procedure_name

    在订阅服务器中调用要执行的存储过程。若要使用该复制方法,请使用 schema_option 来指定自动创建存储过程,或在项目的每个订阅服务器的目标数据库中创建指定的存储过程。custom_stored_procedure 是用户创建的存储过程的名称。sp_MSins_table 包含目标表的名称,用于代替参数的 _table 部分。如果指定了 destination_owner,则它将置于目标表名称之前。例如,对于订阅服务器中 Production 架构拥有的 ProductCategory 表,该参数应为 CALL sp_MSins_ProductionProductCategory。对于对等复制拓扑中的项目,_table 后将追加 GUID 值。对于更新订阅服务器,不支持指定 custom_stored_procedure

    SQL 或 NULL

    复制 INSERT 语句。需要为 INSERT 语句提供项目中发布的所有列的值。对插入复制以下命令:

    INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)

    有关详细信息,请参阅指定如何传播事务性项目的更改

  • [ @del_cmd =] 'del_cmd'
    复制该项目的删除时所使用的复制命令类型。del_cmd 的数据类型为 nvarchar(255),可以是下列值之一:

    说明

    NONE

    不执行任何操作。

    CALLsp_MSdel_table(默认值)

    - 或 -

    CALL custom_stored_procedure_name

    在订阅服务器中调用要执行的存储过程。若要使用该复制方法,请使用 schema_option 来指定自动创建存储过程,或在项目的每个订阅服务器的目标数据库中创建指定的存储过程。custom_stored_procedure 是用户创建的存储过程的名称。sp_MSdel_table 包含目标表的名称,用于代替参数的 _table 部分。如果指定了 destination_owner,则它将置于目标表名称之前。例如,对于订阅服务器中 Production 架构拥有的 ProductCategory 表,该参数应为 CALL sp_MSdel_ProductionProductCategory。对于对等复制拓扑中的项目,_table 后将追加 GUID 值。对于更新订阅服务器,不支持指定 custom_stored_procedure

    XCALL sp_MSdel_table

    -或-

    XCALL custom_stored_procedure_name

    采用 XCALL 样式参数调用存储过程。若要使用该复制方法,请使用 schema_option 来指定自动创建存储过程,或在项目的每个订阅服务器的目标数据库中创建指定的存储过程。对于更新订阅服务器,不允许指定用户创建的存储过程。

    SQL 或 NULL

    复制 DELETE 语句。为 DELETE 语句提供所有主键列值。对删除复制以下命令:

    DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    有关详细信息,请参阅指定如何传播事务性项目的更改

  • [ @upd_cmd =] 'upd_cmd'
    复制该项目的更新时所使用的复制命令类型。upd_cmd 的数据类型为 nvarchar(255),可以是下列值之一:

    说明

    NONE

    不执行任何操作。

    CALL sp_MSupd_table

    - 或 -

    CALL custom_stored_procedure_name

    在订阅服务器中调用要执行的存储过程。若要使用该复制方法,请使用 schema_option 来指定自动创建存储过程,或在项目的每个订阅服务器的目标数据库中创建指定的存储过程。

    MCALL sp_MSupd_table

    - 或 -

    MCALL custom_stored_procedure_name

    采用 MCALL 样式参数调用存储过程。若要使用该复制方法,请使用 schema_option 来指定自动创建存储过程,或在项目的每个订阅服务器的目标数据库中创建指定的存储过程。custom_stored_procedure 是用户创建的存储过程的名称。sp_MSupd_table 包含目标表的名称,用于代替参数的 _table 部分。如果指定了 destination_owner,则它将置于目标表名称之前。例如,对于订阅服务器中 Production 架构拥有的 ProductCategory 表,该参数应为 MCALL sp_MSupd_ProductionProductCategory。对于对等复制拓扑中的项目,_table 后将追加 GUID 值。对于更新订阅服务器,不允许指定用户创建的存储过程。

    SCALL sp_MSupd_table(默认值)

    - 或 -

    SCALL custom_stored_procedure_name

    采用 SCALL 样式参数调用存储过程。若要使用该复制方法,请使用 schema_option 来指定自动创建存储过程,或在项目的每个订阅服务器的目标数据库中创建指定的存储过程。custom_stored_procedure 是用户创建的存储过程的名称。sp_MSupd_table 包含目标表的名称,用于代替参数的 _table 部分。如果指定了 destination_owner,则它将置于目标表名称之前。例如,对于订阅服务器中 Production 架构拥有的 ProductCategory 表,该参数应为 SCALL sp_MSupd_ProductionProductCategory。对于对等复制拓扑中的项目,_table 后将追加 GUID 值。对于更新订阅服务器,不允许指定用户创建的存储过程。

    XCALL sp_MSupd_table

    -或-

    XCALL custom_stored_procedure_name

    采用 XCALL 样式参数调用存储过程。若要使用该复制方法,请使用 schema_option 来指定自动创建存储过程,或在项目的每个订阅服务器的目标数据库中创建指定的存储过程。对于更新订阅服务器,不允许指定用户创建的存储过程。

    SQL 或 NULL

    复制 UPDATE 语句。UPDATE 语句在所有的列值和主键列值中提供。对更新复制以下命令:

    UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue
    ms173857.note(zh-cn,SQL.90).gif注意:
    对于传播到订阅服务器的数据量,CALL、MCALL、SCALL 和 XCALL 语法各不相同。CALL 语法传递所有已插入和已删除的列的所有值。SCALL 语法只传递受影响的列的值。XCALL 语法传递所有列的值(无论更改与否),包括列以前的值。有关详细信息,请参阅指定如何传播事务性项目的更改
  • [ @creation_script =] 'creation_script'
    用于创建订阅数据库中项目的可选项目架构脚本的路径和名称。creation_script 的数据类型为 nvarchar(255),默认值为 NULL。
  • [ @description =] 'description'
    项目的说明项。description 的数据类型为 nvarchar(255),默认值为 NULL。
  • [ @pre_creation_cmd =] 'pre_creation_cmd'
    指定在应用该项目的快照时,如果系统在订阅服务器中检测到同名的现有对象,则应该执行的操作。pre_creation_cmd 的数据类型为 nvarchar(10),可以是下列值之一:

    说明

    none

    不使用命令。

    delete

    在应用快照之前从目标表中删除数据。水平筛选项目时,将只删除筛选子句所指定的列中的数据。定义水平筛选时,不支持用于 Oracle 发布服务器。

    drop(默认值)

    删除目标表。

    truncate

    截断目标表。对 ODBC 或 OLE DB 订阅服务器无效。

  • [ @filter_clause=] 'filter_clause'
    是定义水平筛选器的限制 (WHERE) 子句。当输入限制子句时,将省略关键字 WHERE。filter_clause 的数据类型为 ntext,默认值为 NULL。有关详细信息,请参阅筛选已发布数据
  • [ @schema_option =] schema_option
    给定项目的架构生成选项的位掩码。schema_option 的数据类型为 binary(8),并且可以是具有下列一个或多个值的 | (Bitwise OR) 产品:

    ms173857.note(zh-cn,SQL.90).gif注意:
    如果该值为 NULL,则系统将为依赖于其他项目属性的项目自动生成有效的架构选项。“备注”中给出的“默认架构选项”表列出了基于项目类型和复制类型的组合所选择的值。

  • [ @destination_owner =] 'destination_owner'
    目标对象的所有者的名称。destination_owner 的数据类型为 sysname,默认值为 NULL。如果未指定 destination_owner,则基于下列规则自动指定所有者:

    条件 目标对象所有者

    发布使用本机模式的大容量复制来生成初始快照,该快照只支持 SQL Server 订阅服务器。

    默认使用 source_owner 的值。

    从非 SQL Server 发布服务器发布。

    默认值为目标数据库的所有者。

    发布使用字符模式的大容量复制来生成初始快照,该快照支持非 SQL Server 订阅服务器。

    不分配。

    若要支持非 SQL Server 订阅服务器,destination_owner 必须为 NULL。

  • [ @status=] status
    指定项目是否是活动的,以及其他如何传播更改的选项。status 的数据类型为 tinyint,并且可以是具有下列一个或多个值的 | (Bitwise OR) 产品。

  • [ @source_owner =] 'source_owner'
    源对象的所有者。source_owner 的数据类型为 sysname,默认值为 NULL。必须为 Oracle 发布服务器指定 source_owner
  • [ @sync_object_owner =] 'sync_object_owner'
    用来定义发布项目的视图的所有者。sync_object_owner 的数据类型为 sysname,默认值为 NULL。
  • [ @filter_owner =] 'filter_owner'
    筛选器的所有者。filter_owner 的数据类型为 sysname,默认值为 NULL。
  • [ @source_object =] 'source_object'
    要发布的数据库对象。source_object 的数据类型为 sysname,默认值为 NULL。如果 source_table 为 NULL,则 source_object 不能为 NULL。**应当使用 source_object 代替 source_table。有关可以使用快照或事务复制进行发布的对象的类型的详细信息,请参阅发布数据和数据库对象
  • [ @artid = ] article_ID OUTPUT
    新项目的 ID。article_ID 的数据类型为 int,默认值为 NULL,它是 OUTPUT 参数。
  • [ @auto_identity_range = ] 'auto_identity_range'
    启用和禁用在创建发布时对发布的自动标识范围处理。auto_identity_range 的数据类型为 nvarchar(5),可以是下列值之一:

    说明

    true

    启用自动标识范围处理

    false

    禁用自动标识范围处理

    NULL(默认值)

    标识范围处理由 identityrangemanagementoption 设置。

    ms173857.note(zh-cn,SQL.90).gif注意:
    不推荐使用 auto_identity_range,提供此参数只是为了向后兼容。应使用 identityrangemanagementoption 来指定标识范围管理选项。有关详细信息,请参阅复制标识列
  • [ @pub_identity_range = ] pub_identity_range
    如果将项目的 identityrangemanagementoption 设置为 auto 或将 auto_identity_range 设置为 true,则控制发布服务器中的范围大小。pub_identity_range 的数据类型为 bigint,默认值为 NULL。Oracle 发布服务器不支持。**
  • [ @identity_range = ] identity_range
    如果将项目的 identityrangemanagementoption 设置为 auto 或将 auto_identity_range 设置为 true,则控制订阅服务器中的范围大小。identity_range 的数据类型为 bigint,默认值为 NULL。当 auto_identity_range 设置为 true 时使用。Oracle 发布服务器不支持。**
  • [ @threshold = ] threshold
    百分比值,用于控制分发代理何时分配新标识范围。如果使用 threshold 中指定的百分比值,则分发代理将创建新的标识范围。threshold 的数据类型为 bigint,默认值为 NULL。当 identityrangemanagementoption 设置为 autoauto_identity_range 设置为 true 时使用。Oracle 发布服务器不支持。**
  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    确认此存储过程所执行的操作是否会使现有快照失效。force_invalidate_snapshot 的数据类型为 bit,默认值为 0。

    0 指定添加项目不会导致快照失效。如果存储过程检测到更改需要新的快照,则会发生错误并且不进行任何更改。

    1 指定:添加项目可能导致快照无效,如果存在需要新快照的订阅,则为要标记为过时的现有快照和要生成的新快照进行授权。

  • [ @use_default_datatypes = ] use_default_datatypes
    当从 Oracle 发布服务器发布项目时,是否使用默认的列数据类型映射。use_default_datatypes 的数据类型为 bit,默认值为 1。

    1 = 使用默认项目列映射。通过执行 sp_getdefaultdatatypemapping,可以显示默认数据类型映射。

    0 = 定义了自定义项目列映射,因此 sp_addarticle 不调用 sp_articleview

    如果 use_default_datatypes 设置为 0,则必须对每个要从默认值更改为其他值的列映射执行一次 sp_changearticlecolumndatatype。已定义所有自定义列映射之后,必须执行 sp_articleview

    ms173857.note(zh-cn,SQL.90).gif注意:
    该参数只应当用于 Oracle 发布服务器。对于 SQL Server 发布服务器,如果将 use_default_datatypes 设置为 0,将生成错误。
  • [ @identityrangemanagementoption = ] identityrangemanagementoption
    指定如何处理项目的标识范围管理。identityrangemanagementoption 的数据类型为 nvarchar(10),可以是下列值之一:

    说明

    none

    复制不会显式执行标识范围管理。仅当为了保持与 SQL Server 早期版本的向后兼容性时,才建议使用该选项。禁止用于对等复制。

    manual

    使用 NOT FOR REPLICATION 标记标识列,以启用手动标识范围处理。

    auto

    指定自动管理标识范围。

    NULL(默认值)

    如果 auto_identity_range 的值不是 true,则默认值为 none。在对等拓扑默认(忽略 auto_identity_range)中,默认值为 manual

    为了向后兼容,当 identityrangemanagementoption 值为 NULL 时,将检查 auto_identity_range 值。不过,在 identityrangemanagementoption 的值不为 NULL 时,则忽略 auto_identity_range 的值。**

    有关详细信息,请参阅复制标识列

  • [ @publisher = ] 'publisher'
    指定一个非 SQL Server 发布服务器。publisher 的数据类型为 sysname,默认值为 NULL。

    ms173857.note(zh-cn,SQL.90).gif注意:
    向 SQL Server 发布服务器中添加项目时,不应使用 publisher
  • [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
    在应用初始快照时,是否执行所复制的用户触发器。fire_triggers_on_snapshot 的数据类型为 nvarchar(5),默认值为 FALSE。true 表示在应用快照时将执行复制的表中的用户触发器。为了复制触发器,schema_option 的位掩码值必须包括值 0x100

返回代码值

0(成功)或 1(失败)

备注

sp_addarticle 用于快照复制或事务复制。

默认情况下,如果复制不支持列数据类型,则复制不发布源表中的任何列。如果需要发布这样的列,则必须执行 sp_articlecolumn 才能添加列。有关详细信息,请参阅所有类型复制的注意事项

将项目添加到支持对等事务复制的发布中时,将应用下列限制:

  • 必须为所有基于日志的项目指定参数化语句。必须在 status 值中包括 16
  • 目标表的名称和所有者必须与源表匹配。
  • 不能水平或垂直筛选项目。
  • 不支持自动标识范围管理。必须将 identityrangemanagementoption 的值指定为手动。
  • 如果表中存在 timestamp 列,则必须在 schema_option 中包括 0x08,才能将列作为 timestamp 进行复制。
  • 不能为 ins_cmdupd_cmddel_cmd 指定值 SQL

有关详细信息,请参阅对等事务复制

发布对象时,对象的定义会复制到订阅服务器。如果要发布的数据库对象依赖于一个或多个其他对象,则必须发布所有引用的对象。例如,如果要发布的视图依赖于一个表,则也必须发布该表。

如果 vertical_partition 设置为 true,则 sp_addarticle 将视图的创建推迟到调用 sp_articleview 时(添加最后一个 sp_articlecolumn 之后)。

如果发布允许更新订阅,并且已发布的表没有 uniqueidentifier 列,则 sp_addarticle 会自动将 uniqueidentifier 列添加到表中。

对于支持可转换订阅的项目,将忽略为 ins_cmddel_cmdupd_cmd 指定的值。

默认架构选项

该表说明了当用户未指定 schema_options 时复制所设置的默认值,这种情况下,该值取决于复制类型(沿顶部显示)和项目类型(显示在第一列中)。

项目类型 复制类型  

 

事务性项目

Snapshot

aggregate schema only

0x01

0x01

func schema only

0x01

0x01

indexed view schema only

0x01

0x01

indexed view logbased

0x30F3

0x3071

indexed view logbase manualboth

0x30F3

0x3071

indexed view logbased manualfilter

0x30F3

0x3071

indexed view logbased manualview

0x30F3

0x3071

logbased

0x30F3

0x3071

logbased manualfilter

0x30F3

0x3071

logbased manualview

0x30F3

0x3071

proc exec

0x01

0x01

proc schema only

0x01

0x01

serialized proc exec

0x01

0x01

view schema only

0x01

0x01

ms173857.note(zh-cn,SQL.90).gif注意:
如果对排队更新启用发布,则将 schema_option 的值 0x80 添加到表中所显示的默认值中。对于非 SQL Server 发布,默认 schema_option0x050D3

有效架构选项

此表按复制类型(在顶部横向显示)和项目类型(在第一列纵向显示)说明了 schema_option 允许的值。

项目类型 复制类型  

 

事务性项目

Snapshot

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

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

serialized proc exec

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

proc schema only

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

view schema only

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

func schema only

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x400000000x80000000

indexed view schema only

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

ms173857.note(zh-cn,SQL.90).gif注意:
对于排队更新发布,必须启用 schema_option 的值 0x80000x80。非 SQL Server 发布支持的 schema_option 值包括:0x010x020x100x400x800x10000x40000X8000

权限

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

示例

DECLARE @publication    AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL'; 
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';

-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema 
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @table, 
    @source_object = @table,
    @source_owner = @schemaowner, 
    @schema_option = 0x80030F3,
    @vertical_partition = N'true', 
    @type = N'logbased',
    @filter_clause = @filterclause;

-- (Optional) Manually call the stored procedure to create the 
-- horizontal filtering stored procedure. Since the type is 
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter 
    @publication = @publication, 
    @article = @table, 
    @filter_clause = @filterclause, 
    @filter_name = @filtername;

-- Add all columns to the article.
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table;

-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table, 
    @column = N'DaysToManufacture', 
    @operation = N'drop';

-- (Optional) Manually call the stored procedure to create the 
-- vertical filtering view. Since the type is 'logbased', 
-- this stored procedures is executed automatically.
EXEC sp_articleview 
    @publication = @publication, 
    @article = @table,
    @filter_clause = @filterclause;
GO

请参阅

参考

sp_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_articleview (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
复制存储过程 (Transact-SQL)

其他资源

How to: Define an Article (Replication Transact-SQL Programming)
发布数据和数据库对象

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

更改的内容:
  • 更新了对 schema_option 参数的 0x20000000 值的说明。

2005 年 12 月 5 日

新增内容:
  • 记录了为 schema_option 参数设置 0x20 选项时的其他限制。
更改的内容:
  • 阐述了对 type 参数的支持选项的说明。
  • 更正了 creation_script 参数的大小。