매개 변수가 있는 행 필터 최적화Optimize Parameterized Row Filters

이 항목에서는 SQL Server 2017SQL Server 2017 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL에서 매개 변수가 있는 행 필터를 최적화하는 방법에 대해 설명합니다.This topic describes how to optimize parameterized row filters in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

항목 내용In This Topic

시작하기 전 주의 사항 Before You Begin

권장 사항 Recommendations

  • 매개 변수가 있는 필터를 사용하는 경우 게시를 만들 때 use partition groups 옵션 또는 keep partition changes 옵션을 지정하여 병합 복제에서 필터가 처리되는 방법을 제어할 수 있습니다.When you use parameterized filters, you can control how the filters are processed by merge replication by specifying either the use partition groups option or the keep partition changes option when you create a publication. 이러한 옵션은 게시 데이터베이스에 추가 메타데이터를 저장함으로써 필터링된 아티클이 있는 게시의 동기화 성능을 개선합니다.These options improve the synchronization performance for publications with filtered articles by storing additional metadata in the publication database. 아티클을 만들 때 partition options 를 설정하면 구독자 간에 데이터가 공유되는 방법을 제어할 수 있습니다.You can control how the data is shared among Subscribers by setting partition options when you create an article. 이러한 요구 사항에 대한 자세한 내용은 매개 변수가 있는 행 필터를 참조하세요.For more information about these requirements, see Parameterized Row Filters.

    삭제가 올바르게 전파되도록 보장하려면 SQL Server CompactSQL Server CompactSQL Server Compact 구독자에서 keep_partition_changes를 true로 설정해야 합니다.With SQL Server CompactSQL Server CompactSQL Server Compact subscribers, keep_partition_changes must be set to true to ensure that deletes are correctly propagated. false로 설정한 경우 구독자에 예상한 것보다 많은 행이 포함될 수 있습니다.When set to false, the subscriber might have more rows than expected.

SQL Server Management Studio 사용 Using SQL Server Management Studio

다음 설정을 사용하여 매개 변수가 있는 행 필터를 최적화할 수 있습니다.The following settings can be used to optimize parameterized row filters:

Partition OptionsPartition Options
아티클 속성 - <Article> 대화 상자 또는 필터 추가 대화 상자의 속성 페이지에서 이 옵션을 설정합니다.Set this option on the Properties page of the Article Properties - <Article> dialog box, or in the Add Filter dialog box. 두 대화 상자는 새 게시 마법사 및 게시 속성 - <게시> 대화 상자에서 사용할 수 있습니다.Both dialog boxes are available in the New Publication Wizard and the Publication Properties - <Publication> dialog box. 아티클 속성 - <Article> 대화 상자에서는 필터 추가 대화 상자에서 사용할 수 없는 이 옵션에 대한 추가 값을 지정할 수 있습니다.The Article Properties - <Article> dialog box allows you to specify additional values for this option that are not available in the Add Filter dialog box.

파티션 미리 계산Precompute Partitions
게시의 아티클이 일련의 요구 사항을 충족하는 경우 이 옵션은 기본적으로 True 로 설정됩니다.This option is set to True by default if the articles in your publication adhere to a set of requirements. 이러한 요구 사항에 대한 자세한 내용은 사전 계산 파티션으로 매개 변수가 있는 필터 성능 최적화를 참조하세요.For more information about these requirements, see Optimize Parameterized Filter Performance with Precomputed Partitions. 게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 이 옵션을 수정합니다.Modify this option on the Subscription Options page of the Publication Properties - <Publication> dialog box.

동기화 최적화Optimize Synchronization
파티션 미리 계산False 로 설정된 경우에만 이 옵션을 True로 설정해야 합니다.This option should be set to True only if Precompute Partitions is set to False. 게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 이 옵션을 설정합니다.Set this option on the Subscription Options page of the Publication Properties - <Publication> dialog box.

새 게시 마법사 사용 및 게시 속성 - <게시> 대화 상자 액세스에 대한 자세한 내용은 게시 만들기게시 속성 보기 및 수정을 참조하세요.For more information about using the New Publication Wizard and accessing the Publication Properties - <Publication> dialog box, see Create a Publication and View and Modify Publication Properties.

필터 추가 또는 필터 편집 대화 상자에서 파티션 옵션을 설정하려면To set Partition options in the Add Filter or Edit Filter dialog box

  1. 새 게시 마법사의 테이블 행 필터 페이지 또는 게시 속성 - <게시> 대화 상자의 행 필터 페이지에서 추가를 클릭하고 필터 추가를 클릭합니다.On the Filter Table Rows page of the New Publication Wizard or the Filter Rows page of the Publication Properties - <Publication> dialog box, click Add, and then click Add Filter.

  2. 매개 변수가 있는 필터를 만듭니다.Create a parameterized filter. 자세한 내용은 병합 아티클에 대한 매개 변수가 있는 행 필터 정의 및 수정을 참조하세요.For more information, see Define and Modify a Parameterized Row Filter for a Merge Article.

  3. 구독자 간에 데이터를 공유하는 방식과 일치하는 옵션을 선택합니다.Select the option that matches how data will be shared among Subscribers:

    • 이 테이블의 행을 여러 구독으로 이동A row from this table will go to multiple subscriptions

    • 이 테이블의 행을 단일 구독으로 이동A row from this table will go to only one subscription

      이 테이블의 행을 단일 구독으로 이동을 선택하면 병합 복제에서는 보다 작은 메타데이터를 저장하고 처리하여 성능을 최적화할 수 있습니다.If you select A row from this table will go to only one subscription, merge replication can optimize performance by storing and processing less metadata. 그러나 한 행이 둘 이상의 구독자로 복제될 수 없도록 데이터가 분할되어야 합니다.However, you must ensure that the data is partitioned in such a way that a row cannot be replicated to more than one Subscriber. 자세한 내용은 매개 변수가 있는 행 필터항목의 "'partition options' 설정" 섹션을 참조하십시오.For more information, see the section "Setting 'partition options'" in the topic Parameterized Row Filters.

  4. 확인을 클릭합니다.Click OK.

  5. 게시 속성 - <게시> 대화 상자에 있는 경우 확인을 클릭하여 대화 상자를 저장하고 닫습니다.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

아티클 속성 - <Article> 대화 상자에서 파티션 옵션을 설정하려면To set Partition Options in the Article Properties - <Article> dialog box

  1. 새 게시 마법사의 아티클 페이지 또는 게시 속성 - <게시> 대화 상자에서 테이블을 선택하고 아티클 속성을 클릭합니다.On the Articles page of the New Publication Wizard or the Publication Properties - <Publication> dialog box, select a table, and then click Article Properties.

  2. 선택한 테이블 아티클 속성 설정 또는 모든 테이블 아티클 속성 설정을 클릭합니다.Click Set Properties of Highlighted Table Article or Set Properties of All Table Articles.

  3. 아티클 속성 - <Article> 대화 상자의 속성 탭에 있는 대상 개체 섹션에서 파티션 옵션에 대해 다음 값 중 하나를 지정합니다.In the Destination Object section of the Properties tab of the Article Properties - <Article> dialog box, specify one of the following values for Partition Options:

    • 겹침Overlapping

    • 겹침, 파티션 외부 데이터 변경 내용 허용 안 함Overlapping, disallow out-of-partition data changes

    • 겹치지 않음, 단일 구독Nonoverlapping, single subscription

    • 겹치지 않음, 구독 간 공유Nonoverlapping, shared between subscriptions

      이러한 옵션 및 이 옵션이 필터 추가필터 편집 대화 상자에서 사용 가능한 옵션과 어떻게 관련되어 있는지에 대한 자세한 내용은 매개 변수가 있는 행 필터의 "'partition options' 설정" 섹션을 참조하십시오.For more information about these options and how they relate to the options available in the Add Filter and Edit Filter dialog boxes, see the "Setting 'partition options'" section of Parameterized Row Filters.

  4. 확인을 클릭합니다.Click OK.

  5. 게시 속성 - <게시> 대화 상자에 있는 경우 확인을 클릭하여 대화 상자를 저장하고 닫습니다.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

파티션 미리 계산을 설정하려면To set Precompute Partitions

  1. 게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 파티션 사전 계산 옵션의 값을 선택합니다.On the Subscription Options page of the Publication Properties - <Publication> dialog box, select a value for the Precompute Partitions option. 다음과 같은 경우 이 속성은 읽기 전용입니다.The property is read-only if:

    • 게시가 사전 계산 파티션의 요구 사항을 충족시키지 못합니다.The publication does not meet the requirements for precomputed partitions.

    • 게시에 대한 스냅숏이 아직 생성되지 않았습니다.A snapshot has not yet been generated for the publication. 이 경우 해당 옵션은 스냅숏 생성 시기 자동 설정의 값을 표시합니다.In this case, the option displays a value of Set automatically when a snapshot is created.

  2. 확인을 클릭합니다.Click OK.

동기화 최적화를 설정하려면To set Optimize Synchronization

  1. 게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 동기화 최적화에 대해 True 값을 선택합니다.On the Subscription Options page of the Publication Properties - <Publication> dialog box, select a value of True for the Optimize Synchronization option.

  2. 확인을 클릭합니다.Click OK.

Transact-SQL 사용 Using Transact-SQL

@keep_partition_changes@use_partition_groups에 대한 필터링 옵션의 정의는 sp_addmergepublication을 참조하세요.For definitions of the filtering options for @keep_partition_changes and @use_partition_groups, see sp_addmergepublication.

새 게시를 만들 때 병합 필터 최적화를 지정하려면To specify merge filter optimizations when creating a new publication

  1. 게시 데이터베이스의 게시자에서 sp_addmergepublication을 실행합니다.At the Publisher on the publication database, execute sp_addmergepublication. @publication을 지정하고 다음 매개 변수 중 하나에 true 값을 지정합니다.Specify @publication and a value of true for one the following parameters:

  2. 게시에 대한 스냅숏 작업을 추가합니다.Add a snapshot job for the publication. 자세한 내용은 게시 만들기를 참조하세요.For more information see Create a Publication.

  3. 게시 데이터베이스의 게시자에서 sp_addmergearticle을 실행하고 다음 매개 변수를 지정합니다.At the Publisher on the publication database, execute sp_addmergearticle, specifying the following parameters:

    • @publication - 1단계에서 만든 게시의 이름입니다.@publication - the name of the publication from step 1.

    • @article - 아티클의 이름.@article - a name for the article

    • @source_object - 게시되는 데이터베이스 개체.@source_object - the database object being published.

    • @subset_filterclause - 아티클을 행 필터링하는 데 사용되는 선택적인 매개 변수가 있는 필터 절.@subset_filterclause - the optional parameterized filter clause used to horizontally filter the article.

    • @partition_options - 필터링된 아티클에 대한 파티션 옵션.@partition_options - the partition options for the filtered article.

  4. 게시의 각 아티클에 대해 3단계를 반복합니다.Repeat step 3 for each article in the publication.

  5. 필요에 따라 게시 데이터베이스의 게시자에서 sp_addmergefilter 를 실행하여 두 아티클 간의 조인 필터를 정의합니다.(Optional) At the Publisher on the publication database, execute sp_addmergefilter to define a join filter between two articles. 자세한 내용은 병합 아티클 사이에서 조인 필터 정의 및 수정을 참조하세요.For more information, see Define and Modify a Join Filter Between Merge Articles.

기존 게시에 대한 병합 필터 동작을 확인 및 수정하려면To view and modify merge filter behaviors for an existing publication

  1. 필요에 따라 게시 데이터베이스의 게시자에서 sp_helpmergepublication을 실행하고 @publication에서 매개 변수가 있는 행 필터를 최적화하는 방법에 대해 설명합니다.(Optional) At the Publisher on the publication database, execute sp_helpmergepublication, specifying @publication. 결과 집합에서 keep_partition_changesuse_partition_groups 값을 확인합니다.Note the value of keep_partition_changes and use_partition_groups in the result set.

  2. 필요에 따라 게시 데이터베이스의 게시자에서 sp_changemergepublication을 실행합니다.(Optional) At the Publisher on the publication database, execute sp_changemergepublication. @propertyuse_partition_groups 값을 지정하고 @valuetrue 또는 false를 지정합니다.Specify a value of use_partition_groups for @property and either true or false for @value.

  3. 필요에 따라 게시 데이터베이스의 게시자에서 sp_changemergepublication을 실행합니다.(Optional) At the Publisher on the publication database, execute sp_changemergepublication. @propertykeep_partition_changes 값을 지정하고 @valuetrue 또는 false를 지정합니다.Specify a value of keep_partition_changes for @property and either true or false for @value.

    참고

    keep_partition_changes를 설정할 때는 먼저 use_partition_groups를 해제하고 @force_reinit_subscription1 값을 지정해야 합니다.When enabling keep_partition_changes, you must first disable use_partition_groups and specify a value of 1 for @force_reinit_subscription.

  4. 필요에 따라 게시 데이터베이스의 게시자에서 sp_changemergearticle을 실행합니다.(Optional) At the Publisher on the publication database, execute sp_changemergearticle. @propertypartition_options 값을 지정하고 @value에는 적절한 값을 지정합니다.Specify a value of partition_options for @property and the appropriate value for @value. 이러한 필터링 옵션의 정의는 sp_addmergearticle 을 참조하십시오.See sp_addmergearticle for definitions of these filtering options.

  5. 필요에 따라 스냅숏 에이전트를 시작하여 스냅숏을 다시 생성합니다.(Optional) Start the Snapshot Agent to regenerate the snapshot if necessary. 새 스냅숏을 생성해야 하는 변경에 대한 자세한 내용은 게시 및 아티클 속성 변경을 참조하세요.For information about which changes require a new snapshot to be generated, see Change Publication and Article Properties.

관련 항목:See Also

병합 아티클 간의 조인 필터 집합 자동 생성(SQL Server Management Studio) Automatically Generate a Set of Join Filters Between Merge Articles (SQL Server Management Studio)
병합 아티클에 대한 매개 변수가 있는 행 필터 정의 및 수정 Define and Modify a Parameterized Row Filter for a Merge Article
매개 변수가 있는 행 필터 Parameterized Row Filters