如何定义和修改合并项目间的联接筛选器 (SQL Server Management Studio)

在新建发布向导的**“筛选表行”页或“发布属性 - <发布>”对话框的“筛选行”**页上,定义、修改和删除联接筛选器。有关使用该向导和访问此对话框的详细信息,请参阅如何创建发布和定义项目 (SQL Server Management Studio)如何查看和修改发布属性以及项目属性 (SQL Server Management Studio)

注意注意

如果对发布的订阅进行初始化之后,在“发布属性 - <发布>”对话框中添加、修改或删除联接筛选器,则必须在进行更改后生成新的快照并重新初始化所有订阅。有关属性更改要求的详细信息,请参阅更改发布和项目属性

可以为一组表手动创建联接筛选器,或者复制可以基于表上定义的外键和主键之间的关系自动生成筛选器。有关如何自动生成一组联接筛选器的详细信息,请参阅如何在合并项目之间自动生成一组联接筛选器 (SQL Server Management Studio)

定义联接筛选器

  1. 在新建发布向导的**“筛选表行”页或“发布属性 - <发布>”“筛选行”页上,在“筛选的表”**窗格中选择一个现有的行筛选器或联接筛选器。

    注意注意

    若要创建联接筛选器,发布必须至少包含两个相关表。联接筛选器可扩展行筛选器;因此必须先对一个表定义行筛选器,才能使用联接将该筛选器扩展到另一个表。定义一个联接筛选器后,如果发布包含更多相关表,则可使用其他联接筛选器来扩展此联接筛选器。

  2. 单击**“添加”,再单击“添加联接以扩展所选筛选器”**。

  3. 创建联接语句:选择**“使用生成器创建语句”“手动编写联接语句”**。

    • 如果选择使用生成器,则使用网格中的列(“连接词”“筛选的表列”“运算符”“联接的表列”)来生成联接语句。

      网格中的每一列都包含一个下拉组合框,使您可以从中选择两列和一个运算符(=<><=<>=>like)。结果将显示在**“预览”文本区域中。如果联接中涉及多个列对,则从“连接词”**列中选择一个连接词(AND 或 OR),然后再输入两列和一个运算符。

    • 如果选择手动编写联接语句,请在**“联接语句”文本区域中编写联接语句。使用“筛选的表列”列表框和“联接的表列”列表框将列拖放到“联接语句”**文本区域。

    • 完整的联接语句如下所示:

      SELECT <published_columns> FROM [Sales].[SalesOrderHeader] INNER JOIN [Sales].[SalesOrderDetail] ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID]
      

      JOIN 子句应使用由两个部分组成的名称来命名;它不支持由三个部分和四个部分组成的名称命名。

  4. 指定联接选项:

    • 如果在筛选的表(父表)中联接的列是唯一的,则选择**“唯一键”**。

      注意事项注意

      选择此选项表明联接筛选器中子表和父表之间的关系是一对一或一对多。仅当子表的联接列上具有保证唯一性的约束时才选择此选项。如果该选项设置不正确,数据可能无法收敛。

    • 默认情况下,合并复制在同步过程中逐行处理更改。若要将筛选的表和联接的表行中的相关更改作为一个单元进行处理,则选择**“逻辑记录”**(仅 Microsoft SQL Server 2005 和更高版本)。仅当符合项目和发布使用逻辑记录的要求时,才可使用此选项。有关详细信息,请参阅通过逻辑记录对相关行的更改进行分组中的“使用逻辑记录的注意事项”部分。

  5. 单击“确定”。

  6. 如果在**“发布属性 - <发布>”对话框中,请单击“确定”**保存并关闭对话框。

修改联接筛选器

  1. 在新建发布向导的**“筛选表行”页或“发布属性 - <发布>”“筛选行”页上,从“筛选的表”窗格中选择筛选器,然后单击“编辑”**。

  2. 在**“编辑联接”**对话框中,修改筛选器。

  3. 单击“确定”。

删除联接筛选器

  • 在新建发布向导的**“筛选表行”页或“发布属性 - <发布>”“筛选行”页上,从“筛选的表”窗格中选择筛选器,然后单击“删除”**。如果删除的联接筛选器自身是由其他联接扩展而成的,则也将删除那些联接。