다음을 통해 공유


병합 아티클 해결 프로그램 지정

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server 2014에서 병합 아티클 확인자를 지정하는 방법에 대해 설명합니다.

항목 내용

시작하기 전에

권장 사항

  • 병합 복제에서 다음 유형의 아티클 해결 프로그램을 사용할 수 있습니다.

  • 기본 해결 프로그램 이외의 해결 프로그램을 사용하려면 해당 해결 프로그램을 병합 에이전트를 실행하는 컴퓨터로 복사하고 등록해야 합니다. 비즈니스 논리 처리기를 사용하는 경우에는 해당 프로그램을 게시자에서도 등록해야 합니다. 병합 에이전트는 다음에서 실행될 수 있습니다.

    • 밀어넣기 구독에 대한 배포자

    • 끌어오기 구독에 대한 구독자

    • 웹 동기화를 사용하는 끌어오기 구독에 대한 Microsoft 인터넷 정보 서비스(IIS) 서버

SQL Server Management Studio 사용

확인자를 등록한 후 아티클 속성 - <아티>클 대화 상자의 해결 프로그램 탭에서 해결자를 사용하도록 지정합니다. 이 대화 상자는 새 게시 마법사 및 게시 속성 - <게시> 대화 상자에서 사용할 수 있습니다. 마법사 사용 및 대화 상자 액세스에 대한 자세한 내용은 게시 만들기게시 속성 보기 및 수정을 참조하세요.

해결 프로그램을 지정하려면

  1. 새 게시 마법사 또는 게시 속성 - <게시> 대화 상자의 아티클 페이지에서 테이블을 선택합니다.

  2. 아티클 속성을 클릭한 다음 선택한 테이블 아티클 속성 설정을 클릭합니다.

  3. 아티클 속성 - <아티클> 페이지에서 해결 프로그램 탭을 클릭합니다.

  4. 사용자 지정 해결 프로그램 사용(배포자에 등록됨) 을 선택하고 목록에서 해결 프로그램을 클릭합니다.

  5. 해결 프로그램에 열 이름과 같은 입력값이 필요하면 해결 프로그램에 필요한 정보 입력 입력란에 값을 지정합니다.

  6. 확인을 클릭합니다.

  7. 이 과정을 해결 프로그램이 필요한 각 아티클에서 반복합니다.

Transact-SQL 사용

사용자 지정 충돌 해결 프로그램을 등록하려면

  1. 사용자 지정 충돌 해결 프로그램을 등록하려면 다음 유형 중 하나를 만듭니다.

  2. 원하는 확인자가 이미 등록되어 있는지 확인하려면 데이터베이스의 게시자에서 sp_enumcustomresolvers(Transact-SQL) 를 실행합니다. 그러면 사용자 지정 해결 프로그램에 대한 설명, 배포자에 등록된 각 COM 기반 해결 프로그램의 CLSID(클래스 식별자) 또는 배포자에 등록된 각 비즈니스 논리 처리기의 관리 어셈블리에 대한 정보가 표시됩니다.

  3. 원하는 사용자 지정 확인자를 아직 등록하지 않은 경우 배포자에서 sp_registercustomresolver(Transact-SQL) 을 실행합니다. @article_resolver 확인자의 이름을 지정합니다. 비즈니스 논리 처리기의 경우 어셈블리의 이름입니다. COM 기반 확인자의 경우 @resolver_clsid DLL의 CLSID를 지정하고 비즈니스 논리 처리기의 경우 @is_dotnet_assembly 값, @dotnet_assembly_name 어셈블리 이름 및 @dotnet_class_name 재정의하는 클래스의 정규화된 이름을 지정 true합니다.BusinessLogicModule

    참고

    비즈니스 논리 처리기 어셈블리가 병합 에이전트 실행 파일과 동일한 디렉터리, 병합 에이전트 동기적으로 시작하는 애플리케이션과 동일한 디렉터리 또는 GAC(전역 어셈블리 캐시)에 배포되지 않은 경우 @dotnet_assembly_name 대한 어셈블리 이름으로 전체 경로를 지정해야 합니다.

  4. COM 기반 해결 프로그램인 경우:

    • 밀어넣기 구독에 대한 배포자 또는 끌어오기 구독에 대한 구독자에 사용자 지정 해결 프로그램 DLL을 복사합니다.

      참고

      Microsoft 사용자 지정 해결 프로그램은 C:\Program Files\Microsoft SQL Server\120\COM 디렉터리에서 찾을 수 있습니다.

    • regsvr32.exe를 사용하여 운영 체제에 사용자 지정 해결 프로그램 DLL을 등록합니다. 예를 들어 명령 프롬프트에서 다음을 실행하면 SQL Server 가산성 충돌 해결 프로그램이 등록됩니다.

      regsvr32 ssradd.dll  
      
  5. 확인자가 비즈니스 논리 처리기인 경우 어셈블리를 병합 에이전트 실행 파일(replmerg.exe)과 동일한 폴더에 배포하거나, 병합 에이전트 호출하는 애플리케이션과 동일한 폴더에 배포하거나, 3단계에서 @dotnet_assembly_name 매개 변수에 대해 지정된 폴더에 어셈블리를 배포합니다.

    참고

    병합 에이전트 실행 파일의 기본 설치 위치는 C:\Program Files\Microsoft SQL Server\120\COM입니다.

병합 아티클을 정의할 때 사용자 지정 해결 프로그램을 지정하려면

  1. 사용자 지정 충돌 해결 프로그램을 사용하려면 위 절차를 사용하여 해결 프로그램을 만들고 등록합니다.

  2. 게시자에서 sp_enumcustomresolvers(Transact-SQL) 을 실행하고 결과 집합의 필드에 원하는 사용자 지정 확인자의 이름을 적어둡니다.

  3. 게시 데이터베이스의 게시자에서 sp_addmergearticle(Transact-SQL)를 실행합니다. @article_resolver 2단계의 확인자 이름과 @resolver_info매개 변수 를 사용하여 사용자 지정 확인자에게 필요한 입력을 지정합니다. 저장 프로시저 기반 사용자 지정 확인자의 경우 @resolver_info 저장 프로시저의 이름입니다. Microsoft에서 제공하는 해결 프로그램에 필요한 입력에 대한 자세한 내용은 Microsoft COM 기반 해결 프로그램을 참조하세요.

기존 병합 아티클에 대한 사용자 지정 해결 프로그램을 지정하거나 변경하려면

  1. 아티클에 대해 사용자 지정 확인자를 정의했는지 확인하거나 확인자의 이름을 얻으려면 sp_helpmergearticle(Transact-SQL)을 실행합니다. 아티클에 대해 정의된 사용자 지정 해결 프로그램이 있으면 article_resolver 필드에 이름이 표시됩니다. 해결 프로그램에 제공되는 입력은 모두 결과 집합의 resolver_info 에 표시됩니다.

  2. 게시자에서 sp_enumcustomresolvers(Transact-SQL) 을 실행하고 결과 집합의 필드에 원하는 사용자 지정 확인자의 이름을 적어둡니다.

  3. 게시 데이터베이스의 게시자에서 sp_changemergearticle(Transact-SQL)를 실행합니다. @property 비즈니스 논리 처리기의 전체 경로와 @value 2단계에서 원하는 사용자 지정 해결 프로그램의 이름을 포함하여 article_resolver 값을 지정합니다.

  4. 사용자 지정 확인자의 필수 입력을 변경하려면 sp_changemergearticle(Transact-SQL) 을 다시 실행합니다. @property 대한 resolver_info 값과 @value대한 사용자 지정 확인자의 필수 입력을 지정합니다. 저장 프로시저 기반 사용자 지정 확인자의 경우 @resolver_info 저장 프로시저의 이름입니다. 필요한 입력에 대한 자세한 내용은 Microsoft COM 기반 해결 프로그램을 참조하세요.

사용자 지정 충돌 해결 프로그램의 등록을 취소하려면

  1. 게시자에서 sp_enumcustomresolvers(Transact-SQL) 을 실행하고 결과 집합의 필드에서 제거할 사용자 지정 확인자의 이름을 기록해 둡니다.

  2. 배포자에서 sp_unregistercustomresolver(Transact-SQL) 를 실행합니다. @article_resolver 1단계에서 사용자 지정 확인자의 전체 이름을 지정합니다.

예제(Transact-SQL)

이 예에서는 새 아티클을 만들고 충돌이 발생하는 경우 SQL Server 평균 충돌 해결 프로그램을 사용하여 UnitPrice 열의 평균을 계산하도록 지정합니다.

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 Server 가산 충돌 해결 프로그램을 사용하여 UnitsOnOrder 열의 합을 계산하도록 지정합니다.

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

참고 항목

Advanced Merge Replication Conflict Detection and Resolution
병합 아티클에 대한 비즈니스 논리 처리기 구현