병합 아티클 해결 프로그램 지정
이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server 2012에서 병합 아티클 해결 프로그램을 지정하는 방법에 대해 설명합니다.
항목 내용
시작하기 전에:
권장 사항
다음을 사용하여 병합 아티클 해결 프로그램을 지정하려면
SQL Server Management Studio
Transact-SQL
시작하기 전에
권장 사항
병합 복제에서 다음 유형의 아티클 해결 프로그램을 사용할 수 있습니다.
기본 해결 프로그램. 기본 해결 프로그램의 동작은 구독이 클라이언트 구독인지 서버 구독인지에 따라 달라집니다. 구독 유형 지정 방법은 병합 구독 유형 및 충돌 해결 우선 순위 지정(SQL Server Management Studio)을 참조하십시오.
사용자 지정 해결 프로그램 - 관리 코드로 작성된 비즈니스 논리 처리기 또는 사용자 지정 COM 기반 해결 프로그램일 수 있습니다. 자세한 내용은 고급 병합 복제 충돌 감지 및 해결을 참조하십시오. 충돌하는 행뿐만 아니라 각 복제된 행에 대해서도 실행되는 사용자 지정 논리를 구현해야 하는 경우 병합 아티클에 대한 비즈니스 논리 처리기 구현을 참조하십시오.
표준 COM 기반 해결 프로그램 - Microsoft SQL Server에 포함되어 있습니다.
기본 해결 프로그램 이외의 해결 프로그램을 사용하려면 해당 해결 프로그램을 병합 에이전트를 실행하는 컴퓨터로 복사하고 등록해야 합니다. 비즈니스 논리 처리기를 사용하는 경우에는 해당 프로그램을 게시자에서도 등록해야 합니다. 병합 에이전트는 다음에서 실행될 수 있습니다.
밀어넣기 구독에 대한 배포자
끌어오기 구독에 대한 구독자
웹 동기화를 사용하는 끌어오기 구독에 대한 Microsoft 인터넷 정보 서비스(IIS) 서버
[Top]
SQL Server Management Studio 사용
해결 프로그램을 등록한 후에는 아티클 속성 - <Article> 대화 상자의 해결 프로그램 탭에서 아티클이 해결 프로그램을 사용하도록 지정합니다. 이 대화 상자는 새 게시 마법사 및 게시 속성 - <Publication> 대화 상자에서 사용할 수 있습니다. 마법사 사용과 대화 상자 액세스에 대한 자세한 내용은 게시 만들기 및 게시 속성 보기 및 수정을 참조하십시오.
해결 프로그램을 지정하려면
새 게시 마법사 또는 게시 속성 - <Publication> 대화 상자의 아티클 페이지에서 테이블을 선택합니다.
아티클 속성을 클릭한 다음 선택한 테이블 아티클 속성 설정을 클릭합니다.
아티클 속성 - <Article> 페이지에서 해결 프로그램 탭을 클릭합니다.
**사용자 지정 해결 프로그램 사용(배포자에 등록됨)**을 선택하고 목록에서 해결 프로그램을 클릭합니다.
해결 프로그램에 열 이름과 같은 입력값이 필요하면 해결 프로그램에 필요한 정보 입력 입력란에 값을 지정합니다.
확인을 클릭합니다.
이 과정을 해결 프로그램이 필요한 각 아티클에서 반복합니다.
[Top]
Transact-SQL 사용
사용자 지정 충돌 해결 프로그램을 등록하려면
사용자 지정 충돌 해결 프로그램을 등록하려면 다음 유형 중 하나를 만듭니다.
관리 코드 기반 해결 프로그램(비즈니스 논리 처리기). 자세한 내용은 병합 아티클에 대한 비즈니스 논리 처리기 구현을 참조하십시오.
저장 프로시저 기반 해결 프로그램 및 COM 기반 해결 프로그램 자세한 내용은 병합 아티클용 사용자 지정 충돌 해결 프로그램 구현을 참조하십시오.
원하는 해결 프로그램이 이미 등록되어 있는지 확인하려면 데이터베이스의 게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행합니다. 그러면 사용자 지정 해결 프로그램에 대한 설명, 배포자에 등록된 각 COM 기반 해결 프로그램의 CLSID(클래스 식별자) 또는 배포자에 등록된 각 비즈니스 논리 처리기의 관리 어셈블리에 대한 정보가 표시됩니다.
원하는 해결 프로그램이 아직 등록되지 않은 경우 배포자에서 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에 어셈블리 이름을 포함하는 전체 경로를 지정해야 합니다.
COM 기반 해결 프로그램인 경우:
밀어넣기 구독에 대한 배포자 또는 끌어오기 구독에 대한 구독자에 사용자 지정 해결 프로그램 DLL을 복사합니다.
[!참고]
Microsoft 사용자 지정 해결 프로그램은 C:\Program Files\Microsoft SQL Server\110\COM 디렉터리에 있습니다.
regsvr32.exe를 사용하여 운영 체제에 사용자 지정 해결 프로그램 DLL을 등록합니다. 예를 들어 명령 프롬프트에서 다음을 실행하면 SQL Server 가산성 충돌 해결 프로그램이 등록됩니다.
regsvr32 ssradd.dll
해결 프로그램이 비즈니스 논리 처리기인 경우 병합 에이전트 실행 파일(replmerg.exe)과 같은 디렉터리, 병합 에이전트를 호출하는 응용 프로그램과 같은 폴더, 또는 3단계에서 @dotnet_assembly_name 매개 변수에 지정한 폴더에 어셈블리를 배포합니다.
[!참고]
병합 에이전트 실행 파일의 기본 설치 위치는 C:\Program Files\Microsoft SQL Server\110\COM입니다.
병합 아티클을 정의할 때 사용자 지정 해결 프로그램을 지정하려면
사용자 지정 충돌 해결 프로그램을 사용하려면 위 절차를 사용하여 해결 프로그램을 만들고 등록합니다.
게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하고 결과 집합의 value 필드에서 원하는 사용자 지정 해결 프로그램의 이름을 확인합니다.
게시 데이터베이스의 게시자에서 sp_add_targetservergroup(Transact-SQL)을 실행합니다. @article_resolver에 2단계의 이름을 지정하고 @resolver_info 매개 변수를 사용하여 사용자 지정 해결 프로그램에 필요한 입력을 지정합니다. 저장 프로시저 기반 사용자 지정 해결 프로그램의 경우 @resolver_info는 저장 프로시저의 이름입니다. Microsoft에서 제공하는 해결 프로그램에 필요한 입력에 대한 자세한 내용은 Microsoft COM 기반 해결 프로그램을 참조하십시오.
기존 병합 아티클에 대한 사용자 지정 해결 프로그램을 지정하거나 변경하려면
아티클에 대한 사용자 지정 해결 프로그램이 정의되어 있는지 확인하려면 sp_helpmergearticle(Transact-SQL)을 실행합니다. 아티클에 대해 정의된 사용자 지정 해결 프로그램이 있으면 article_resolver 필드에 이름이 표시됩니다. 해결 프로그램에 제공되는 입력은 모두 결과 집합의 resolver_info에 표시됩니다.
게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하고 결과 집합의 value 필드에서 원하는 사용자 지정 해결 프로그램의 이름을 확인합니다.
게시 데이터베이스의 게시자에서 sp_changemergearticle(Transact-SQL)을 실행합니다. @property에 비즈니스 논리 처리기의 전체 경로를 포함하여 article_resolver 값을 지정하고, @value에는 2단계의 원하는 사용자 지정 해결 프로그램 이름을 지정합니다.
사용자 지정 해결 프로그램에 필요한 입력을 변경하려면 sp_changemergearticle(Transact-SQL)을 다시 실행합니다. @property에 resolver_info 값, @value에 사용자 지정 해결 프로그램에 필요한 입력을 지정합니다. 저장 프로시저 기반 사용자 지정 해결 프로그램의 경우 @resolver_info는 저장 프로시저의 이름입니다. 필요한 입력에 대한 자세한 내용은 Microsoft COM 기반 해결 프로그램을 참조하십시오.
사용자 지정 충돌 해결 프로그램의 등록을 취소하려면
게시자에서 sp_enumcustomresolvers(Transact-SQL)를 실행하고 결과 집합의 value 필드에서 제거할 사용자 지정 해결 프로그램의 이름을 확인합니다.
배포자에서 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
[Top]