Transact-SQL 参考

sp_articleview

在垂直或水平筛选表时创建项目的同步对象。该同步对象是一个视图,用作目的表的架构和数据的筛选源。只有未订阅项目才能由此存储过程修改。此存储过程在发布服务器的发布数据库上执行。

语法

sp_articleview [ @publication = ] 'publication'
    , [ @article = ] 'article'
    [ , [ @view_name = ] 'view_name']
    [ , [ @filter_clause = ] 'filter_clause']
    [ , [ @change_active = ] change_active ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

参数

[@publication =] 'publication'

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

[@article = ] 'article'

是项目名。article 的数据类型为 sysname,没有默认设置。

[@view_name =] 'view_name'

是同步对象名。view_namenvarchar(386) 类型,默认设置为 NULL。

[@filter_clause =] 'filter_clause'

是定义水平筛选的 (WHERE) 限制子句。当输入限制子句时,省略 WHERE 关键字。filter_clause 的数据类型为 ntext,默认设置为 NULL。

[@change_active = ] change_active

允许修改包含订阅的发布中的列。change_active 的数据类型为 int,默认设置为 0。如果是 0,则表示将不更改列。如果是 1,则表示可以在有订阅的活动项目上创建或重新创建视图。

[@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_articleview 创建视图并在 sysarticles 表的 sync_objid 列中插入同步对象(视图)的 ID,并且在 filter_clause 列中插入同步对象(视图)的 ID。如果所有列均已复制并且没有 filter_clause,则 sysarticles 表中的 sync_objid 设置为基表的 ID,并且无需使用 sp_articleview

若要发布垂直筛选表(即筛选列),请首先不使用 sync_object 参数运行 sp_addarticle,为要复制的每一列都运行一次 sp_articlecolumn(定义垂直筛选),然后运行 sp_articleview 创建同步对象。

若要发布水平筛选表(即筛选行),请不使用 filter 参数运行 sp_addarticle。接着运行 sp_articlefilter,并提供包括 filter_clause 在内的全部参数。然后运行 sp_articleview,并提供包括相同的 filter_clause 在内的全部参数。

若要发布垂直筛选和水平筛选的表,请不带 sync_objectfilter 参数运行 sp_addarticle。对要复制的每列运行一次 sp_articlecolumn,然后运行 sp_articlefiltersp_articleview

如果项目已经有同步对象(视图),则 sp_articleview 除去现有视图并自动创建新视图。如果视图是手动创建的(sysarticles 中的type 是 5),则不除去现有的视图。

如果手工地创建自定义筛选存储过程和同步对象,则不运行 sp_articleview。相反,将它们作为 filtersync_object 参数,与适当的 type 值一起提供给 sp_addarticle

权限

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

请参见

sp_addarticle

sp_articlecolumn

sp_articlefilter

系统存储过程