다음을 통해 공유


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

적용 대상: SQL Server

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

권장 사항

  • 병합 복제를 사용하면 다음과 같은 유형의 문서 확인자를 사용할 수 있습니다.

  • 기본 확인자가 아닌 다른 확인자를 사용하려면 병합 에이전트가 실행되는 컴퓨터에 확인자를 복사하여 등록해야 합니다(비즈니스 논리 처리기를 사용하는 경우 게시자에게도 등록해야 함). 병합 에이전트는 다음 위치에서 실행됩니다.

    • 밀어넣기 구독의 배포자

    • 끌어오기 구독의 구독자

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

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_assemblytrue 값을 지정하며, @dotnet_assembly_name에 어셈블리 이름을 지정하고, @dotnet_class_nameBusinessLogicModule을(를) 재정의하는 클래스의 정규화된 이름을 지정합니다.

    참고 항목

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

  4. 확인자가 COM 기반 확인자인 경우:

    • 밀어넣기 구독의 경우 배포자에게, 끌어오기 구독의 경우 구독자에게 사용자 지정 확인자 DLL을 복사합니다.

      참고 항목

      Microsoft 사용자 지정 확인자는 C:\Program Files\Microsoft SQL Server\nnn\COM 디렉터리에서 찾을 수 있습니다.

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

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

    참고 항목

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

병합 문서를 정의할 때 사용자 지정 확인자 지정

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

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

  3. 게시 데이터베이스의 게시자에서 sp_addmergearticle(Transact-SQL)을 실행합니다. 2단계의 @article_resolver에 대한 확인자 이름과 @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에는 비즈니스 논리 처리기의 전체 경로를 포함한 article_resolver 값을 지정하고, @value에는 2단계에서 원하는 사용자 지정 확인자의 이름을 지정합니다.

  4. 사용자 지정 확인자에 필요한 입력을 변경하려면 sp_changemergearticle(Transact-SQL)을 다시 실행합니다. @propertyresolver_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

참고 항목

고급 병합 복제 충돌 검색 및 해결
병합 문서에 대한 비즈니스 논리 처리기 구현