生成筛选器

使用**“生成筛选器”**对话框,可以对合并发布中某一个表定义行筛选器;然后,复制会自动将筛选器扩展到通过外键关系相关的其他表。 例如,如果对 Customer 表定义筛选器,使其仅包含与法国客户有关的数据,则复制将扩展该筛选器,以便相关的 Orders 表和 Order Details 表仅包含与法国客户相关的信息。

选项

使用此对话框可以创建表的行筛选器,包括三个步骤。 然后,将筛选器扩展到与筛选的表通过主键和外键关系相关的表。 例如,假设有三个表:CustomerSalesOrderHeaderSalesOrderDetail,其中 Customer 表与 SalesOrderHeader 表之间有关系,SalesOrderHeader 表与 SalesOrderDetail 表之间有关系,将行筛选器应用于 Customer 表,则复制会将该筛选器扩展到 SalesOrderHeader 表和 SalesOrderDetail 表。

  1. 选择要筛选的表。

    从下拉列表框中选择表。 只有在**“项目”**页上所选择的表才会出现在列表框中。

  2. 完成筛选语句以标识订阅服务器所要接收的表行。

    定义新的筛选语句。 **“列”列表框列出了要从“选择要筛选的表”**中选择的表中发布的所有列。 **“筛选语句”**文本区域包括默认的文本,其格式为:

    SELECT <published_columns> FROM [tableowner].[tablename] WHERE

    此文本无法更改;请使用标准的 Transact-SQL 语法在 WHERE 关键字后键入筛选子句。

    重要说明重要提示

    为提高性能,建议您不要在参数化行筛选子句中对列名应用函数,如 LEFT([MyColumn]) = SUSER_SNAME()。 如果在筛选子句中使用 HOST_NAME 并覆盖 HOST_NAME 值,则可能需要使用 CONVERT 转换数据类型。 有关此情况的最佳实践的详细信息,请参阅主题参数化行筛选器中的“覆盖 HOST_NAME() 值”部分。

  3. 指定将从此表接收数据的订阅数。

    Microsoft 仅限 SQL Server 2005 及更高版本。 通过合并复制,可以指定最适合您的数据和应用程序的分区类型。 如果选择**“此表中的行将仅转到一个订阅”**,则合并复制将设置不重叠分区选项。 不重叠分区与预计算分区协同工作以提高性能,使用不重叠分区可以将与预计算分区相关联的上载开销降至最低。 使用的参数化筛选器和联接筛选器越复杂,不重叠分区的性能优势就越明显。 如果选择此选项,则必须确保对数据分区时不能将行复制到多个订阅服务器。 有关详细信息,请参阅主题参数化行筛选器中的“设置‘分区选项’”部分。

添加筛选器之后,请单击**“确定”**退出并关闭该对话框。 将对照 SELECT 子句中的表分析并运行指定的筛选器。 如果筛选语句有语法错误或其他问题,将会通知您编辑该筛选语句。

分析该语句之后,复制将创建必要的联接筛选器。 如果您尚未对运行此向导的发布服务器配置分发服务器,系统将会提示您进行配置。