如何优化参数化行筛选器(复制 Transact-SQL 编程)

当使用参数化筛选器时,可通过在创建发布时指定 use partition groups 选项或 keep partition changes 选项来控制合并复制处理筛选器的方式。 通过将其他元数据存储在发布数据库中,上述选项可提高具有已筛选项目的发布的同步性能。 通过在创建项目时设置 partition options,您可以控制在订阅服务器之间共享数据的方式。

有关这些要求的详细信息,请参阅参数化行筛选器。 有关 @keep_partition_changes@use_partition_groups 的筛选选项的定义,请参阅 sp_addmergepublication

创建新发布时指定合并筛选器的优化

  1. 在发布服务器上,对发布数据库执行 sp_addmergepublication。 指定 @publication,并将值 true 指定给以下参数之一:

    • @use_partition_groups:最高级别的性能优化(如果项目符合预计算分区的要求)。 有关详细信息,请参阅使用预计算分区优化参数化筛选器的性能

    • @keep_partition_changes - 如果无法使用预计算分区,则使用此优化。

  2. 为发布添加一个快照作业。 有关详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)

  3. 在发布服务器上,对发布数据库执行 sp_addmergearticle,并指定以下参数:

    • @publication - 步骤 1 中发布的名称。

    • @article - 项目的名称

    • @source_object - 发布的数据库对象。

    • @subset_filterclause - 用于以水平方式筛选项目的参数化筛选器子句(可选)。

    • @partition_options - 已过滤项目的分区选项。

  4. 对发布中的每个项目重复步骤 3。

  5. (可选)在发布服务器上,对发布数据库执行 sp_addmergefilter 以在两个项目之间定义一个联接筛选器。 有关详细信息,请参阅如何定义和修改合并项目之间的联接筛选器(复制 Transact-SQL 编程)

查看和修改现有发布的合并筛选器行为

  1. (可选)在发布服务器上,对发布数据库执行 sp_helpmergepublication,并指定 @publication。 请注意结果集中 keep_partition_changesuse_partition_groups 的值。

  2. (可选)在发布服务器上,对发布数据库执行 sp_changemergepublication。 将值 use_partition_groups 指定给 @property,并将 true 或 false 指定给 @value

  3. (可选)在发布服务器上,对发布数据库执行 sp_changemergepublication。 将值 keep_partition_changes 指定给 @property,并将 true 或 false 指定给 @value

    注意注意

    当启用 keep_partition_changes 时,必须首先禁用 use_partition_groups,并将值 1 指定给 @force_reinit_subscription

  4. (可选)在发布服务器上,对发布数据库执行 sp_changemergearticle。 将值 partition_options 指定给 @property,并为 @value 指定相应的值。 有关以上筛选选项的定义,请参阅 sp_addmergearticle

  5. (可选)启动快照代理以重新生成快照(如果需要)。 有关哪些更改需要生成新快照的信息,请参阅更改发布和项目属性