Share via


방법: 병합 아티클을 위한 저장 프로시저 기반 사용자 지정 충돌 해결 프로그램 구현(복제 Transact-SQL 프로그래밍)

각 게시자에서 사용자 지정 충돌 해결 프로그램을 Transact-SQL 저장 프로시저로 작성할 수 있습니다. 동기화하는 동안 해결 프로그램이 등록된 아티클에서 충돌이 발생하면 이 저장 프로시저가 호출되고 병합 에이전트가 충돌 행에 대한 정보를 프로시저의 필수 매개 변수에 전달합니다. 저장 프로시저 기반 사용자 지정 충돌 해결 프로그램은 항상 게시자에서 만들어집니다.

[!참고]

Microsoft SQL Server 저장 프로시저 해결 프로그램은 행 변경에 따른 충돌을 처리할 때만 호출됩니다. PRIMARY KEY 위반 또는 고유 인덱스 제약 조건 위반으로 인한 삽입 실패와 같은 다른 충돌 유형을 처리하는 데 사용할 수 없습니다.

저장 프로시저 기반 사용자 지정 충돌 해결 프로그램을 만들려면

  1. 게시 또는 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

    구독자에 있는 게시된 테이블의 소유자

    이 저장 프로시저는 병합 에이전트가 이 매개 변수에 전달한 값을 사용하여 사용자 지정 충돌 해결 논리를 구현합니다. 이 저장 프로시저는 기본 테이블과 구조가 같고 충돌 시 적용되는 행의 데이터 값을 포함하는 단일 행 결과 집합을 반환해야 합니다.

  2. 게시자에 연결할 때 구독자가 사용하는 모든 로그인에 저장 프로시저에 대한 EXECUTE 권한을 부여합니다.

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

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

  1. @publication@article을 지정하고 @propertyarticle_resolver 값, @valueMicrosoftSQL Server Stored ProcedureResolver 값을 지정하여 sp_changemergearticle을 실행합니다.

  2. @publication@article을 지정하고 @propertyresolver_info 값, @value에 충돌 해결 프로그램 논리를 구현하는 저장 프로시저 이름을 지정하여 sp_changemergearticle을 실행합니다.