병합 아티클 해결 프로그램 지정Specify a Merge Article Resolver

이 항목에서는 SQL Server 2017SQL Server 2017 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL에서 병합 아티클 해결 프로그램을 지정하는 방법에 대해 설명합니다.This topic describes how to specify a merge article resolver 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

  • 병합 복제에서 다음 유형의 아티클 해결 프로그램을 사용할 수 있습니다.Merge replication allows the following types of article resolvers:

  • 기본 해결 프로그램 이외의 해결 프로그램을 사용하려면 해당 해결 프로그램을 병합 에이전트를 실행하는 컴퓨터로 복사하고 등록해야 합니다. 비즈니스 논리 처리기를 사용하는 경우에는 해당 프로그램을 게시자에서도 등록해야 합니다.To use a resolver other than the default resolver, you must copy the resolver to the computer on which the Merge Agent runs and register it (if you are using a business logic handler, it must also be registered at the Publisher). 병합 에이전트는 다음에서 실행될 수 있습니다.The Merge Agent runs at:

    • 밀어넣기 구독에 대한 배포자The Distributor for a push subscription

    • 끌어오기 구독에 대한 구독자The Subscriber for a pull subscription

    • 웹 동기화를 사용하는 끌어오기 구독에 대한 MicrosoftMicrosoft 인터넷 정보 서비스(IIS) 서버The MicrosoftMicrosoft Internet Information Services (IIS) server for a pull subscription that uses Web synchronization

SQL Server Management Studio 사용 Using SQL Server Management Studio

해결 프로그램이 등록되면 새 게시 마법사의 아티클 속성 - <Article> 대화 상자 및 게시 속성 - <게시> 대화 상자의 해결 프로그램 탭에서 아티클에 해당 해결 프로그램이 사용되도록 지정합니다.After the resolver is registered, specify that an article should use the resolver on the Resolver tab of the Article Properties - <Article> dialog box, which is available in the New Publication Wizard and the Publication Properties - <Publication> dialog box. 마법사 사용 및 대화 상자 액세스에 대한 자세한 내용은 게시 만들기게시 속성 보기 및 수정을 참조하세요.For more information about using the wizard and accessing the dialog box, see Create a Publication and View and Modify Publication Properties.

해결 프로그램을 지정하려면To specify a resolver

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

  2. 아티클 속성을 클릭한 다음 선택한 테이블 아티클 속성 설정을 클릭합니다.Click Article Properties, and then click Set Properties of Highlighted Table Article.

  3. 아티클 속성 - <Article> 페이지에서 해결 프로그램 탭을 클릭합니다.On the Article Properties - <Article> page, click the Resolver tab.

  4. 사용자 지정 해결 프로그램 사용(배포자에 등록됨)을 선택하고 목록에서 해결 프로그램을 클릭합니다.Select Use a custom resolver (registered at the Distributor), and then in the list, click the resolver.

  5. 해결 프로그램에 열 이름과 같은 입력값이 필요하면 해결 프로그램에 필요한 정보 입력 입력란에 값을 지정합니다.If the resolver requires input (such as a column name), specify it in the Enter information needed by the resolver text box.

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

  7. 이 과정을 해결 프로그램이 필요한 각 아티클에서 반복합니다.Repeat this process for each article that requires a resolver.

Transact-SQL 사용 Using Transact-SQL

사용자 지정 충돌 해결 프로그램을 등록하려면To register a custom conflict resolver

  1. 사용자 지정 충돌 해결 프로그램을 등록하려면 다음 유형 중 하나를 만듭니다.If you plan to register your own custom conflict resolver, create one of the following types:

  2. 원하는 해결 프로그램이 이미 등록되어 있는지 확인하려면 모든 데이터베이스의 게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행합니다.To determine if the desired resolver is already registered, execute sp_enumcustomresolvers (Transact-SQL) at the Publisher on any database. 그러면 사용자 지정 해결 프로그램에 대한 설명, 배포자에 등록된 각 COM 기반 해결 프로그램의 CLSID(클래스 식별자) 또는 배포자에 등록된 각 비즈니스 논리 처리기의 관리 어셈블리에 대한 정보가 표시됩니다.This displays a description of the custom resolver as well as the class identifier (CLSID) for each COM-based resolver registered at the Distributor or information on the managed assembly for each business logic handler registered at the Distributor.

  3. 원하는 사용자 지정 해결 프로그램이 아직 등록되지 않은 경우 배포자에서 sp_registercustomresolver(Transact-SQL)를 실행합니다.If the desired custom resolver is not already registered, execute sp_registercustomresolver (Transact-SQL) at the Distributor. @article_resolver에 해결 프로그램 이름을 지정합니다. 비즈니스 논리 처리기의 경우 어셈블리 이름입니다.Specify a name for the resolver for @article_resolver; for a business logic handler, this is the friendly name of the assembly. COM 기반 해결 프로그램의 경우 @resolver_clsid에 DLL의 CLSID를 지정하고, 비즈니스 논리 처리기의 경우 @is_dotnet_assemblytrue 값, @dotnet_assembly_name에 어셈블리 이름, @dotnet_class_nameBusinessLogicModule을 재정의하는 클래스의 정규화된 이름을 지정합니다.For COM-based resolvers, specify the CLSID of the DLL for @resolver_clsid, and for a business logic handler, specify a value of true for @is_dotnet_assembly, the name of the assembly for @dotnet_assembly_name, and the fully-qualified name of the class that overrides BusinessLogicModule for @dotnet_class_name.

    참고

    비즈니스 논리 처리기 어셈블리가 병합 에이전트 실행 파일과 같은 디렉터리, 병합 에이전트를 동기적으로 시작하는 응용 프로그램과 같은 디렉터리, 또는 GAC(전역 어셈블리 캐시)에 배포되지 않은 경우 @dotnet_assembly_name에서 병합 아티클 해결 프로그램을 지정하는 방법에 대해 설명합니다.If a business logic handler assembly is not deployed in the same directory as the Merge Agent executable, in the same directory as the application that synchronously starts the Merge Agent, or in the global assembly cache (GAC), you need to specify the full path with the assembly name for @dotnet_assembly_name.

  4. COM 기반 해결 프로그램인 경우:If the resolver is a COM-based resolver:

    • 밀어넣기 구독에 대한 배포자 또는 끌어오기 구독에 대한 구독자에 사용자 지정 해결 프로그램 DLL을 복사합니다.Copy the custom resolver DLL to the Distributor for push subscriptions or to the Subscriber for pull subscriptions.

      참고

      MicrosoftMicrosoft 사용자 지정 해결 프로그램은 C:\Program Files\Microsoft SQL Server\nnn\C:\Program Files\Microsoft SQL Server\nnn\COM 디렉터리에 있습니다.COM directory.

    • regsvr32.exe를 사용하여 운영 체제에 사용자 지정 해결 프로그램 DLL을 등록합니다.Use regsvr32.exe to register the custom resolver DLL with the operating system. 예를 들어 명령 프롬프트에서 다음을 실행하면 SQL ServerSQL Server 가산성 충돌 해결 프로그램이 등록됩니다.For example, executing the following from the command prompt registers the SQL ServerSQL Server Additive Conflict Resolver:

      regsvr32 ssradd.dll  
      
  5. 해결 프로그램이 비즈니스 논리 처리기인 경우 병합 에이전트 실행 파일(replmerg.exe)과 같은 디렉터리, 병합 에이전트를 호출하는 응용 프로그램과 같은 폴더, 또는 3단계에서 @dotnet_assembly_name 매개 변수에 지정한 폴더에 어셈블리를 배포합니다.If the resolver is a business logic handler, deploy the assembly in the same folder as the Merge Agent executable (replmerg.exe), in the same folder as an application that invokes the Merge Agent, or in the folder specified for the @dotnet_assembly_name parameter in step 3.

    참고

    병합 에이전트 실행 파일의 기본 설치 위치는 C:\Program Files\Microsoft SQL Server\nnn\C:\Program Files\Microsoft SQL Server\nnn\COM입니다.The default installation location of the Merge Agent executable is C:\Program Files\Microsoft SQL Server\nnn\C:\Program Files\Microsoft SQL Server\nnn\COM.

병합 아티클을 정의할 때 사용자 지정 해결 프로그램을 지정하려면To specify a custom resolver when defining a merge article

  1. 사용자 지정 충돌 해결 프로그램을 사용하려면 위 절차를 사용하여 해결 프로그램을 만들고 등록합니다.If you plan to use a custom conflict resolver, create and register the resolver using the above procedure.

  2. 게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하고 결과 집합의 value 필드에서 원하는 사용자 지정 해결 프로그램의 이름을 확인합니다.At the Publisher, execute sp_enumcustomresolvers (Transact-SQL) and note the name of the desired custom resolver in the value field of result set.

  3. 게시 데이터베이스의 게시자에서 sp_addmergearticle(Transact-SQL)을 실행합니다.At the Publisher on the publication database, execute sp_addmergearticle (Transact-SQL). @article_resolver에 2단계의 해결 프로그램 이름을 지정하고 @resolver_info 매개 변수를 사용하여 사용자 지정 해결 프로그램에 필요한 입력을 지정합니다.Specify the name of the resolver from step 2 for @article_resolver and any required input to the custom resolver using the @resolver_info parameter. 저장 프로시저 기반 사용자 지정 해결 프로그램의 경우 @resolver_info 는 저장 프로시저의 이름입니다.For stored procedure-based custom resolvers, @resolver_info is the name of the stored procedure. MicrosoftMicrosoft에서 제공하는 해결 프로그램에 필요한 입력에 대한 자세한 내용은 [Microsoft COM 기반 해결 프로그램](../../../relational-databases/replication/merge/advanced-merge-replication-conflict-com-based-resolvers.md)을 참조하세요.For more information about required input for resolvers supplied by MicrosoftMicrosoft, see Microsoft COM-Based Resolvers.

기존 병합 아티클에 대한 사용자 지정 해결 프로그램을 지정하거나 변경하려면To specify or change a custom resolver for an existing merge article

  1. 아티클에 대한 사용자 지정 해결 프로그램이 정의되어 있는지 확인하려면 sp_helpmergearticle(Transact-SQL)을 실행합니다.To determine if a custom resolver has been defined for an article, or to get the name of the resolver, execute sp_helpmergearticle (Transact-SQL). 아티클에 대해 정의된 사용자 지정 해결 프로그램이 있으면 article_resolver 필드에 이름이 표시됩니다.If there is a custom resolver defined for the article, its name will be displayed in the article_resolver field. 해결 프로그램에 제공되는 입력은 모두 결과 집합의 resolver_info 에 표시됩니다.Any input supplied to the resolver will be displayed in the resolver_info field of the result set.

  2. 게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하고 결과 집합의 value 필드에서 원하는 사용자 지정 해결 프로그램의 이름을 확인합니다.At the Publisher, execute sp_enumcustomresolvers (Transact-SQL) and note the name of the desired custom resolver in the value field of the result set.

  3. 게시 데이터베이스의 게시자에서 sp_changemergearticle(Transact-SQL)을 실행합니다.At the Publisher on the publication database, execute sp_changemergearticle (Transact-SQL). @property에 비즈니스 논리 처리기의 전체 경로를 포함하여 article_resolver 값을 지정하고, @value에는 2단계의 원하는 사용자 지정 해결 프로그램 이름을 지정합니다.Specify a value of article_resolver, including the full path for business logic handlers, for @property, and the name of the desired custom resolver from step 2 for @value.

  4. 사용자 지정 해결 프로그램에 필요한 입력을 변경하려면 sp_changemergearticle(Transact-SQL)을 다시 실행합니다.To change any required input for the custom resolver, execute sp_changemergearticle (Transact-SQL) again. @propertyresolver_info 값, @value에 사용자 지정 해결 프로그램에 필요한 입력을 지정합니다.Specify a value of resolver_info for @property and any required input to the custom resolver for @value. 저장 프로시저 기반 사용자 지정 해결 프로그램의 경우 @resolver_info 는 저장 프로시저의 이름입니다.For stored procedure-based custom resolvers, @resolver_info is the name of the stored procedure. 필요한 입력에 대한 자세한 내용은 Microsoft COM 기반 해결 프로그램을 참조하세요.For more information about required input, see Microsoft COM-Based Resolvers.

사용자 지정 충돌 해결 프로그램의 등록을 취소하려면To unregister a custom conflict resolver

  1. 게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하고 결과 집합의 value 필드에서 제거할 사용자 지정 해결 프로그램의 이름을 확인합니다.At the Publisher, execute sp_enumcustomresolvers (Transact-SQL) and note the name of the custom resolver to remove in the value field of the result set.

  2. 배포자에서 sp_unregistercustomresolver(Transact-SQL)를 실행합니다.Execute sp_unregistercustomresolver (Transact-SQL) at the Distributor. @article_resolver에 1단계에서 확인한 사용자 지정 해결 프로그램의 전체 이름을 지정합니다.Specify the full name of the custom resolver from step 1 for @article_resolver.

예(Transact-SQL) Examples (Transact-SQL)

이 예에서는 새 아티클을 만들고 충돌이 발생하는 경우 SQL ServerSQL Server 평균 충돌 해결 프로그램을 사용하여 UnitPrice 열의 평균을 계산하도록 지정합니다.This example creates a new article and specifies that the SQL ServerSQL Server Averaging Conflict Resolver be used to calculate the average of the UnitPrice column when conflicts occur.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = 'AdvWorksSalesOrdersMerge';
SET @article = 'Products';

EXEC sp_addmergearticle 
	@publication = @publication, 
	@article = @article, 
	@source_object = @article, 
	@article_resolver = 'Microsoft SQL Server Averaging Conflict Resolver', 
	@resolver_info = 'UnitPrice';
GO

이 예에서는 아티클을 변경하여 충돌이 발생한 경우 SQL ServerSQL Server 가산 충돌 해결 프로그램을 사용하여 UnitsOnOrder 열의 합을 계산하도록 지정합니다.This example changes an article to specify using the SQL ServerSQL Server Additive Conflict Resolver to calculate the sum of the UnitsOnOrder column when conflicts occur.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = 'AdvWorksSalesOrdersMerge';
SET @article = 'Products';

EXEC sp_changemergearticle 
	@publication = @publication, 
	@article = @article, 
	@property='article_resolver', 
	@value='Microsoft SQL Server Additive Conflict Resolver';

EXEC sp_changemergearticle 
	@publication = @publication, 
	@article = @article, 
	@property='resolver_info', 
	@value='UnitsOnOrder';
GO

관련 항목:See Also

Advanced Merge Replication Conflict Detection and Resolution Advanced Merge Replication Conflict Detection and Resolution
Implement a Business Logic Handler for a Merge Article Implement a Business Logic Handler for a Merge Article