매개 변수가 있는 필터로 병합 게시에 대한 파티션 관리Manage Partitions for a Merge Publication with Parameterized Filters

이 항목에서는 SQL Server 2017SQL Server 2017 , SQL Server Management StudioSQL Server Management Studio또는 RMO(복제 관리 개체)를 사용하여 Transact-SQLTransact-SQL에서 매개 변수가 있는 필터로 병합 게시에 대한 파티션을 관리하는 방법에 대해 설명합니다.This topic describes how to manage partitions for a merge publication with parameterized filters in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO). 매개 변수가 있는 행 필터를 사용하여 겹치지 않는 파티션을 생성할 수 있습니다.Parameterized row filters can be used to generate nonoverlapping partitions. 이러한 파티션을 제한하여 특정 파티션을 하나의 구독에서만 받도록 할 수 있습니다.These partitions can be restricted so that only one subscription receives a given partition. 이러한 경우 구독자 수가 많으면 파티션 수가 많아지고 이에 따라 동일한 수의 분할된 스냅숏이 필요합니다.In these cases, a large number of subscribers will result in a large number of partitions, which in turn requires an equal number of partitioned snapshots. 자세한 내용은 Parameterized Row Filters을 참조하세요.For more information, see Parameterized Row Filters.

항목 내용In This Topic

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

권장 사항 Recommendations

  • 권장하는 복제 토폴로지를 스크립팅할 경우 게시 스크립트는 데이터 파티션을 만드는 저장 프로시저 호출을 포함합니다.If you script a replication topology, which is recommended, publication scripts contain the stored procedure calls to create data partitions. 스크립트는 생성된 파티션에 대한 참조와 하나 이상의 파티션을 다시 만드는 방법(필요한 경우)을 제공합니다.The script provides a reference for the partitions created and a way in which to re-create one or more partitions if necessary. 자세한 내용은 Scripting Replication을 참조하세요.For more information, see Scripting Replication.

  • 겹치지 않는 파티션과 함께 구독을 생성하는 매개 변수가 있는 필터가 게시에 사용된 경우 특정 구독이 손실되어 다시 만들어야 하면 구독된 파티션을 제거하고 구독을 다시 만든 다음 파티션을 다시 만듭니다.When a publication has parameterized filters that yield subscriptions with nonoverlapping partitions, and if a particular subscription is lost and needs to be re-created, you must do the following: remove the partition that was subscribed to, re-create the subscription, and then re-create the partition. 자세한 내용은 Parameterized Row Filters을 참조하세요.For more information, see Parameterized Row Filters. 복제에서는 게시 만들기 스크립트가 생성될 때 기존 구독자 파티션에 대한 만들기 스크립트를 생성합니다.Replication generates creation scripts for existing Subscriber partitions when a publication creation script is generated. 자세한 내용은 Scripting Replication을 참조하세요.For more information, see Scripting Replication.

SQL Server Management Studio 사용 Using SQL Server Management Studio

게시 속성 - <Publication> 대화 상자의 데이터 파티션 페이지에서 파티션을 관리합니다.Manage partitions on the Data Partitions page of the Publication Properties - <Publication> dialog box. 이 대화 상자에 액세스하는 방법은 View and Modify Publication Properties을 참조하세요.For more information about accessing this dialog box, see View and Modify Publication Properties. 이 페이지에서는 파티션을 만들거나 삭제하고, 구독자가 스냅숏 생성 및 배달을 시작하도록 허용하고, 하나 이상의 파티션에 대한 스냅숏을 생성하고, 스냅숏을 정리할 수 있습니다.On this page you can: create and delete partitions; allow Subscribers to initiate snapshot generation and delivery; generate snapshots for one or more partitions; and clean up snapshots.

파티션을 만들려면To create a partition

  1. 게시 속성 - <게시> 대화 상자의 데이터 파티션 페이지에서 추가를 클릭합니다.On the Data Partitions page of the Publication Properties - <Publication> dialog box, click Add.

  2. 데이터 파티션 추가 대화 상자에서 만들려는 파티션에 연결된 HOST_NAME() 및/또는 SUSER_SNAME() 값을 입력합니다.In the Add Data Partition dialog box, enter a value for the HOST_NAME() and/or SUSER_SNAME() value associated with the partition you want to create.

  3. 선택적으로 스냅숏을 새로 고칠 일정을 지정합니다.Optionally specify a schedule for refreshing snapshots:

    1. 이 파티션에 대한 스냅숏 에이전트의 실행 시간을 다음 시간으로 예약을 선택합니다.Select Schedule the Snapshot Agent for this partition to run at the following time(s)

    2. 기본으로 제공되는 스냅숏 새로 고침 일정을 그대로 적용하거나 변경 을 클릭하여 다른 일정을 지정합니다.Accept the default schedule for refreshing snapshots, or click Change to specify a different schedule.

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

파티션을 삭제하려면To delete a partition

  1. 데이터 파티션 페이지의 표에서 파티션을 선택합니다.On the Data Partitions page, select a partition in the grid.

  2. 삭제를 클릭합니다.Click Delete.

구독자가 스냅숏 생성 및 배달을 시작하도록 허용하려면To allow Subscribers to initiate snapshot generation and delivery

  1. 데이터 파티션 페이지에서 새 구독자가 동기화할 때 필요한 경우 자동으로 파티션 정의 및 스냅숏 생성을 선택합니다.On the Data Partitions page, select Automatically define a partition and generate a snapshot if needed when a new Subscriber tries to synchronize.

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

파티션에 대한 스냅숏을 생성하려면To generate a snapshot for a partition

  1. 데이터 파티션 페이지의 표에서 파티션을 선택합니다.On the Data Partitions page, select a partition in the grid.

  2. 선택한 스냅숏 지금 생성을 클릭합니다.Click Generate the selected snapshots now.

파티션에 대한 스냅숏을 정리하려면To clean up a snapshot for a partition

  1. 데이터 파티션 페이지의 표에서 파티션을 선택합니다.On the Data Partitions page, select a partition in the grid.

  2. 기존 스냅숏 정리를 클릭합니다.Click Clean up the existing snapshots.

Transact-SQL 사용 Using Transact-SQL

매개 변수가 있는 필터를 사용하여 게시를 보다 잘 관리하려면 복제 저장 프로시저를 사용하여 기존 파티션을 프로그래밍 방식으로 열거합니다.To better manage a publication with parameterized filters, you can programmatically enumerate the existing partitions using replication stored procedures. 파티션을 만들거나 기존 파티션을 삭제할 수도 있습니다.You can also create and delete existing partitions. 기존 파티션의 다음 정보를 가져올 수 있습니다.The following information on existing partitions can be obtained:

  • 파티션이 필터링되는 방법(SUSER_SNAME(Transact-SQL) 또는 HOST_NAME(Transact-SQL) 사용)How a partition is filtered (using SUSER_SNAME (Transact-SQL) or HOST_NAME (Transact-SQL)).

  • 분할된 스냅숏을 생성하는 작업의 이름The name of the job that generates a partitioned snapshot.

  • 분할된 스냅숏 작업이 마지막으로 실행된 시간The last time that a partitioned snapshot job ran.

    두 부분으로 구성된 스냅숏의 두 번째 부분은 새 구독이 초기화될 때 요청에 따라 생성될 수 있지만, 아래의 절차를 사용하면 이 스냅숏이 생성되는 방식을 제어하고 가장 편리할 때 이 스냅숏을 미리 생성할 수 있습니다.While the second part of the two-part snapshot can be generated on-demand when a new subscription is initialized, the procedures below enable you to control how this snapshot is generated and to pre-generate this snapshot when it is most convenient. 자세한 내용은 Snapshots for Merge Publications with Parameterized Filters을 참조하세요.For more information, see Snapshots for Merge Publications with Parameterized Filters.

기존 파티션의 정보를 보려면To view information on existing partitions

  1. 게시 데이터베이스의 게시자에서 sp_helpmergepartition(Transact-SQL)을 실행합니다.At the Publisher on the publication database, execute sp_helpmergepartition (Transact-SQL). @publication에 게시의 이름을 지정합니다.Specify the name of the publication for @publication. (옵션) 단일 필터링 조건을 기준으로 한 정보만 반환되도록 하려면 @suser_sname 또는 @host_name 을 지정합니다.(Optional) Specify @suser_sname or @host_name to return only information based on a single filtering criterion.

새 파티션을 정의하고 분할된 새 스냅숏을 생성하려면To define a new partition and generate a new partitioned snapshot

  1. 게시 데이터베이스의 게시자에서 sp_addmergepartition(Transact-SQL)을 실행합니다.At the Publisher on the publication database, execute sp_addmergepartition (Transact-SQL). @publication에 게시의 이름을 지정하고 다음 중 하나에 파티션을 정의하는 매개 변수가 있는 값을 지정합니다.Specify the name of the publication for @publication, and the parameterized value that defines the partition for one of the following:

  2. 이 새 파티션에 대해 매개 변수가 있는 스냅숏을 만들고 초기화합니다.Create and initialize the parameterized snapshot for this new partition. 자세한 내용은 Create a Snapshot for a Merge Publication with Parameterized Filters을 참조하세요.For more information, see Create a Snapshot for a Merge Publication with Parameterized Filters.

파티션을 삭제하려면To delete a partition

  1. 게시 데이터베이스의 게시자에서 sp_dropmergepartition(Transact-SQL)을 실행합니다.At the Publisher on the publication database, execute sp_dropmergepartition (Transact-SQL). @publication에 게시의 이름을 지정하고 다음 중 하나에 파티션을 정의하는 매개 변수가 있는 값을 지정합니다.Specify the name of the publication for @publication and the parameterized value that defines the partition for one of the following:

    • @suser_sname - 매개 변수가 있는 필터가 SUSER_SNAME(Transact-SQL)에 의해 반환된 값으로 정의된 경우@suser_sname - when the parameterized filter is defined by the value returned by SUSER_SNAME (Transact-SQL).

    • @host_name - 매개 변수가 있는 필터가 HOST_NAME(Transact-SQL)에 의해 반환된 값으로 정의된 경우@host_name - when the parameterized filter is defined by the value returned by HOST_NAME (Transact-SQL).

      이 경우 파티션에 대한 스냅숏 작업과 스냅숏 파일도 제거됩니다.This also removes the snapshot job and any snapshot files for the partition.

RMO(복제 관리 개체) 사용 Using Replication Management Objects (RMO)

매개 변수가 있는 필터를 사용하여 게시를 보다 잘 관리하려면 RMO(복제 관리 개체)를 사용하여 새 구독자 파티션을 프로그래밍 방식으로 만들고, 기존 구독자 파티션을 열거하고, 프로그래밍 방식으로 열거합니다.To better manage a publication with parameterized filters, you can programmatically create new Subscriber partitions, enumerate the existing Subscriber partitions, and delete Subscriber partitions by using Replication Management Objects (RMO). 구독자 파티션을 만드는 방법은 Create a Snapshot for a Merge Publication with Parameterized Filters을 참조하세요.For information about how to create Subscriber partitions, see Create a Snapshot for a Merge Publication with Parameterized Filters. 기존 파티션에 대한 다음 정보를 가져올 수 있습니다.The following information about existing partitions can be obtained:

  • 파티션에서 기반으로 사용하는 값 및 필터링 기능The value and filtering function upon which the partition is based.

  • 구독자에 대해 매개 변수가 있는 스냅숏을 생성하는 작업의 이름The name of the job that generates a parameterized snapshot for the Subscriber.

  • 매개 변수가 있는 스냅숏 작업이 마지막으로 실행된 시간The last time that a parameterized snapshot job ran.

기존 파티션의 정보를 보려면To view information on existing partitions

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.Create a connection to the Publisher by using the ServerConnection class.

  2. MergePublication 클래스의 인스턴스를 만듭니다.Create an instance of the MergePublication class. 게시의 NameDatabaseName 속성을 설정하고 ConnectionContext 속성을 1단계에서 만든 ServerConnection 으로 설정합니다.Set the Name and DatabaseName properties for the publication, and set the ConnectionContext property to the ServerConnection created in step 1.

  3. LoadProperties 메서드를 호출하여 개체 속성을 가져옵니다.Call the LoadProperties method to get the properties of the object. 이 메서드가 false를 반환하는 경우 2단계에서 게시 속성이 올바르게 정의되지 않았거나 게시가 없습니다.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. EnumMergePartitions 메서드를 호출하고 해당 결과를 MergePartition 개체의 배열에 전달합니다.Call the EnumMergePartitions method, and pass the result to an array of MergePartition objects.

  5. 배열의 각 MergePartition 개체에 대해 원하는 속성을 가져옵니다.For each MergePartition object in the array, get any properties of interest.

기존 파티션을 삭제하려면To delete existing partitions

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.Create a connection to the Publisher by using the ServerConnection class.

  2. MergePublication 클래스의 인스턴스를 만듭니다.Create an instance of the MergePublication class. 게시의 NameDatabaseName 속성을 설정하고 ConnectionContext 속성을 1단계에서 만든 ServerConnection 으로 설정합니다.Set the Name and DatabaseName properties for the publication, and set the ConnectionContext property to the ServerConnection created in step 1.

  3. LoadProperties 메서드를 호출하여 개체 속성을 가져옵니다.Call the LoadProperties method to get the properties of the object. 이 메서드가 false를 반환하는 경우 2단계에서 게시 속성이 올바르게 정의되지 않았거나 게시가 없습니다.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. EnumMergePartitions 메서드를 호출하고 해당 결과를 MergePartition 개체의 배열에 전달합니다.Call the EnumMergePartitions method, and pass the result to an array of MergePartition objects.

  5. 배열의 각 MergePartition 개체에 대해 파티션을 삭제할지 여부를 결정합니다.For each MergePartition object in the array, determine whether the partition should be deleted. 이를 결정할 때는 일반적으로 DynamicFilterLogin 속성이나 DynamicFilterHostName 속성의 값을 기준으로 합니다.This decision is usually based on the value of the DynamicFilterLogin property or the DynamicFilterHostName property.

  6. 2단계에서 만든 RemoveMergePartition 의 개체에서 MergePublication 메서드를 호출합니다.Call the RemoveMergePartition method on the MergePublication object from step 2. 5단계에서 만든 MergePartition 개체를 전달합니다.Pass the MergePartition object from step 5.

  7. 삭제된 각 파티션에 대해 6단계를 반복합니다.Repeat step 6 for each partition that is deleted.

관련 항목:See Also

Parameterized Row Filters Parameterized Row Filters
Snapshots for Merge Publications with Parameterized FiltersSnapshots for Merge Publications with Parameterized Filters