Transact-SQL 参考

sp_articlefilter

筛选将基于表项目发布的数据。此存储过程只能修改没有订阅的项目。此存储过程在发布服务器的发布数据库上执行。

语法

sp_articlefilter [ @publication = ] 'publication'
    , [ @article = ] 'article'
    [ , [ @filter_name = ] 'filter_name' ]
    [ , [ @filter_clause = ] 'filter_clause']
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

参数

[@publication =] 'publication'

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

[@article = ]'article'

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

[@filter_name =] 'filter_name'

是要从 filter_name 创建的筛选存储过程名。filter_name 的数据类型为 nvarchar(386),默认设置为 NULL。

[@filter_clause =] 'filter_clause'

是定义水平筛选的 (WHERE) 限制子句。输入该限制子句时,省略关键字 WHERE。filter_clause 的数据类型为 ntext,默认设置为 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_article_filter 用于快照复制和事务复制。

sp_articlefilter 创建筛选,在 sysarticles 表的 filter 列中插入筛选存储过程的 ID,然后在 filter_clause 列中插入限制子句的文本。

若要创建带水平筛选的项目,请不带 filter 参数执行 sp_addarticle。执行 sp_articlefilter,并提供包括 filter_clause 在内的所有参数,然后执行 sp_articleview,并提供包括相同的 filter_clause 在内的所有参数。如果该筛选已存在,而且 sysarticles 中的 type 为 1(基于日志的项目),则删除以前的筛选并创建新筛选。

如果未提供 filter_namefilter_clause,则删除以前的筛选并将筛选 ID 设置为 0。

权限

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

请参见

sp_addarticle

sp_articlecolumn

sp_articleview

系统存储过程