添加新合并筛选以创建基于与另一个表的联接的分区。此存储过程在发布服务器的发布数据库上执行。
sp_addmergefilter [ @publication = ] 'publication'
,
[ @article = ] 'article'
,
[ @filtername = ] 'filtername'
,
[ @join_articlename = ] 'join_articlename'
,
[ @join_filterclause = ] join_filterclause
[ , [ @join_unique_key = ] join_unique_key ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[@publication = ] 'publication'
是包含该项目的发布名。publication 的数据类型为 sysname,没有默认设置。
[@article = ] 'article'
是项目名。article 的数据类型为 sysname,没有默认设置。
[@filtername = ] 'filtername'
是筛选名。filtername 是必需参数。filtername 的数据类型为 sysname,没有默认设置。
[@join_articlename = ] 'join_articlename'
是联接表的项目名。join_articlename 的数据类型为 sysname,没有默认设置。项目必须在 publication 给定的发布内。
[@join_filterclause = ] join_filterclause
是限定联接的筛选子句。join_ filterclause 的数据类型为 nvarchar(2000)。join_filterclause 只定义此存储过程中的布尔筛选。
[@join_unique_key = ] join_unique_key
指定联接是否在 @article 所指定表中的唯一键上。join_unique_key 的数据类型为 int,默认设置为 0。0 表示非唯一键。1 表示在 @join_articlename 中的唯一键上。
[@force_invalidate_snapshot = ] force_invalidate_snapshot
确认此存储过程采取的操作可能会使现有的快照无效。force_invalidate_snapshot 的数据类型为 bit,默认设置为 0。0 指定对合并项目的更改将不会导致快照无效。如果此存储过程检测到更改确实需要新的快照,则将会出现错误,且不会进行更改。而 1 指定对合并项目的更改可能导致快照无效,而且如果有需要新快照的现有订阅,则值 1 将提供适当的权限,使现有快照被标记为废弃并生成新快照。
[@force_reinit_subscription = ] force_reinit_subscription
确认此存储过程采取的操作可能要求现有的订阅重新初始化。force_reinit_subscription 的数据类型为 bit,默认设置为 0。0 指定对合并项目的更改不会导致订阅重新初始化。如果存储过程检测到更改需要重新初始化订阅,则会发生错误,且不会进行任何更改。而 1 指定对合并项目的更改将导致现有的订阅重新初始化,并提供使订阅重新初始化发生的权限。
0(成功)或 1(失败)
sp_addmergefilter 用于合并复制。
通常,该选项用于具有对已发布的主键表的外键引用的项目,而且该主键表含有在其项目中定义的筛选。主键行的子集用于决定复制到订阅服务器的外键行。
只有 sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员才能执行 sp_ addmergefilter。