방법: 병합 아티클을 위한 저장 프로시저 기반 사용자 지정 충돌 해결 프로그램 구현(복제 Transact-SQL 프로그래밍)
각 게시자에서 사용자 지정 충돌 해결 프로그램을 Transact-SQL 저장 프로시저로 작성할 수 있습니다. 동기화하는 동안 해결 프로그램이 등록된 아티클에서 충돌이 발생하면 이 저장 프로시저가 호출되고 병합 에이전트가 충돌 행에 대한 정보를 프로시저의 필수 매개 변수에 전달합니다. 저장 프로시저 기반 사용자 지정 충돌 해결 프로그램은 항상 게시자에서 만들어집니다.
[!참고]
MicrosoftSQL Server 저장 프로시저 해결 프로그램은 행 변경에 따른 충돌을 처리할 때만 호출됩니다. PRIMARY KEY 위반 또는 고유 인덱스 제약 조건 위반으로 인한 삽입 실패와 같은 다른 충돌 유형을 처리하는 데 사용할 수 없습니다.
저장 프로시저 기반 사용자 지정 충돌 해결 프로그램을 만들려면
게시 또는 msdb 데이터베이스에 있는 게시자에서 다음 필수 매개 변수를 구현하는 새 시스템 저장 프로시저를 만듭니다.
매개 변수
데이터 형식
설명
@tableowner
sysname
충돌을 해결 중인 테이블의 소유자 이름. 게시 데이터베이스에 있는 테이블의 소유자입니다.
@tablename
sysname
충돌을 해결 중인 테이블의 이름
@rowguid
uniqueidentifier
충돌이 있는 행의 고유 식별자
@subscriber
sysname
충돌 변경 내용을 전파 중인 서버의 이름
@subscriber_db
sysname
충돌 변경 내용을 전파 중인 데이터베이스의 이름
@log_conflict OUTPUT
int
병합 프로세스에서 나중에 충돌을 해결할 수 있도록 충돌을 기록할지 여부를 나타냅니다.
0 = 충돌을 기록하지 않습니다.
1 = 충돌 시 구독자의 변경 내용이 무시됩니다.
2 = 충돌 시 게시자의 변경 내용이 무시됩니다.
@conflict_message OUTPUT
nvarchar(512)
충돌을 기록할 경우 해결 정보로 제공되는 메시지
@destowner
sysname
구독자에 있는 게시된 테이블의 소유자
이 저장 프로시저는 병합 에이전트가 이 매개 변수에 전달한 값을 사용하여 사용자 지정 충돌 해결 논리를 구현합니다. 이 저장 프로시저는 기본 테이블과 구조가 같고 충돌 시 적용되는 행의 데이터 값을 포함하는 단일 행 결과 집합을 반환해야 합니다.
게시자에 연결할 때 구독자가 사용하는 모든 로그인에 저장 프로시저에 대한 EXECUTE 권한을 부여합니다.
새 테이블 아티클에 사용자 지정 충돌 해결 프로그램을 사용하려면
- @article_resolver 매개 변수에 MicrosoftSQL Server Stored Procedure Resolver 값, @resolver_info 매개 변수에 충돌 해결 프로그램 논리를 구현하는 저장 프로시저 이름을 지정하여 sp_addmergearticle을 실행하고 아티클을 정의합니다. 자세한 내용은 방법: 아티클 정의(복제 Transact-SQL 프로그래밍)를 참조하십시오.
기존 테이블 아티클에 사용자 지정 충돌 해결 프로그램을 사용하려면
@publication 및 @article을 지정하고 @property에 article_resolver 값, @value에 MicrosoftSQL Server Stored ProcedureResolver 값을 지정하여 sp_changemergearticle을 실행합니다.
@publication 및 @article을 지정하고 @property에 resolver_info 값, @value에 충돌 해결 프로그램 논리를 구현하는 저장 프로시저 이름을 지정하여 sp_changemergearticle을 실행합니다.