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

적용 대상:SQL Server

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

권장 사항

  • 병합 복제본(replica)tion을 사용하면 다음과 같은 유형의 아티클 확인자를 수행할 수 있습니다.

    • 기본 해결 프로그램. 기본 확인자의 동작은 구독이 클라이언트 구독인지 서버 구독인지에 따라 달라집니다. 구독 유형을 지정하는 방법에 대한 자세한 내용은 병합 구독 유형 및 충돌 해결 우선 순위 지정(SQL Server Management Studio)을 참조하세요.

    • 작성한 사용자 지정 해결 프로그램이며, 비즈니스 논리 처리기(관리 코드로 작성됨) 또는 사용자 지정 COM 기반 확인자일 수 있습니다. 자세한 내용은 고급 병합 복제 충돌 검색 및 해결을 참조 하세요. 충돌하는 행뿐만 아니라 각 복제본(replica)ted 행에 대해 실행되는 사용자 지정 논리를 구현해야 하는 경우 병합 아티클에 대한 비즈니스 논리 처리기 구현을 참조하세요.

    • Microsoft SQL Server에 포함된 표준 COM 기반 확인자입니다.

  • 기본 해결 프로그램 이외의 해결 방법을 사용하려면 병합 에이전트 실행되는 컴퓨터에 확인자를 복사하고 등록해야 합니다(비즈니스 논리 처리기를 사용하는 경우 게시자에 등록해야 합니다). 병합 에이전트 다음 위치에서 실행됩니다.

    • 밀어넣기 구독의 배포자

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

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

SQL Server Management Studio 사용

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

확인자를 지정하려면

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

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

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

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

  5. 확인자에 열 이름과 같은 입력이 필요한 경우 확인자 텍스트 상자에 필요한 Enter 정보에서 지정합니다.

  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 true, @dotnet_assembly_name셈블리 이름 및 @dotnet_class_name 재정의하는 클래스의 정규화된 이름을 지정합니다BusinessLogicModule.

    참고 항목

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

  4. 확인자에서 COM 기반 해결 프로그램인 경우:

    • 밀어넣기 구독을 위해 배포자에 사용자 지정 해결 프로그램 DLL을 복사하거나 끌어오기 구독의 구독자에 복사합니다.

      참고 항목

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

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

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

    참고 항목

    병합 에이전트 실행 파일의 기본 설치 위치는 C:\Program Files\Microsoft SQL Server\nnn\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)를 다시 실행합니다. @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

참고 항목

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