방법: 병합 아티클용 COM 기반 사용자 지정 충돌 해결 프로그램 구현(복제 프로그래밍)

Microsoft.SqlServer.Replication.BusinessLogicSupport 네임스페이스는 이벤트를 처리하고 병합 복제 동기화 프로세스 중에 발생하는 충돌을 해결하는 복잡한 비즈니스 논리를 작성할 수 있게 해주는 인터페이스를 구현합니다. 자세한 내용은 방법: 병합 아티클에 대한 비즈니스 논리 처리기 구현(복제 프로그래밍)을 참조하십시오. 네이티브 코드 기반 사용자 지정 비즈니스 논리를 직접 작성하여 충돌을 해결할 수도 있습니다. 이 논리는 Microsoft Visual C++와 같은 제품을 사용하여 COM 구성 요소로 빌드되며 DLL(동적 연결 라이브러리)로 컴파일됩니다. 이러한 COM 기반 사용자 지정 충돌 해결 프로그램은 충돌 해결을 위해 특별히 설계된 ICustomResolver 인터페이스를 구현해야 합니다.

COM 기반 사용자 지정 충돌 해결 프로그램을 만들고 등록하려면

  1. COM 호환 제작 환경에서 사용자 지정 충돌 해결 프로그램 라이브러리에 대한 참조를 추가합니다.

  2. Visual C++ 프로젝트의 경우 #import 지시어를 사용하여 이 라이브러리를 프로젝트로 가져옵니다.

  3. ICustomResolver 인터페이스를 구현하는 클래스를 만듭니다.

  4. 특정 메서드와 속성을 구현합니다.

  5. 프로젝트를 빌드하여 사용자 지정 충돌 해결 프로그램 라이브러리 파일을 만듭니다.

  6. 병합 에이전트 실행 파일이 포함된 디렉터리에 라이브러리를 배포합니다(일반적으로 \Microsoft SQL Server\100\COM).

    [!참고]

    사용자 지정 충돌 해결 프로그램은 끌어오기 구독의 경우 구독자에, 밀어넣기 구독의 경우 배포자에, 또는 웹 동기화에 사용되는 웹 서버에 배포해야 합니다.

  7. 배포 디렉터리에서 regsvr32.exe를 사용하여 다음과 같이 사용자 지정 충돌 해결 프로그램 라이브러리를 등록합니다.

    regsvr32.exe mycustomresolver.dll
    
  8. 게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하여 라이브러리가 이미 사용자 지정 충돌 해결 프로그램으로 등록되어 있지 않은지 확인합니다.

  9. 라이브러리를 사용자 지정 충돌 해결 프로그램으로 등록하려면 배포자에서 sp_registercustomresolver(Transact-SQL)를 실행합니다. @article_resolver에 COM 개체 이름, @resolver_clsid에 라이브러리의 ID(CLSID)를 지정하고 @is_dotnet_assembly에 false 값을 지정합니다.

    [!참고]

    사용자 지정 충돌 해결 프로그램이 더 이상 필요하지 않으면 sp_unregistercustomresolver(Transact-SQL)를 사용하여 등록을 취소할 수 있습니다.

  10. 필요에 따라 클러스터에서 5-8 단계를 반복하여 클러스터의 모든 노드에 사용자 지정 해결 프로그램을 등록합니다. 장애 조치 이후에 사용자 지정 해결 프로그램에서 조정자를 올바르게 로드하려면 이 단계가 필요합니다.

새 테이블 아티클에 사용자 지정 충돌 해결 프로그램을 사용하려면

  1. 게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하고 원하는 해결 프로그램의 이름을 확인합니다.

  2. 게시 데이터베이스의 게시자에서 sp_addmergearticle (Transact-SQL)을 실행하여 아티클을 정의합니다. @article_resolver에 1단계의 아티클 해결 프로그램 이름을 지정합니다. 자세한 내용은 방법: 아티클 정의(복제 Transact-SQL 프로그래밍)를 참조하십시오.

기존 테이블 아티클에 사용자 지정 충돌 해결 프로그램을 사용하려면

  1. 게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하고 원하는 해결 프로그램의 이름을 확인합니다.

  2. sp_changemergearticle(Transact-SQL)을 실행하여 @publication@article을 지정하고, @propertyarticle_resolver 값을, @value에 1단계의 아티클 해결 프로그램 이름을 지정합니다.