20192019. 10. 15. 10:34

병합 복제 게시에서 '충돌 보기' 메뉴의 로그를 통해 아래와 같이 primary key 제약 조건 위반 충돌이 발생한다면? 


'SQL2014S01.test'에서의 행 삽입을 'SQL2014S02.test'(으)로 전파할 수 없습니다. 이 오류는 제약 조건 위반으로 인해 발생할 수 있습니다. PRIMARY KEY 제약 조건 'PK__T3'을(를) 위반했습니다. 개체 'dbo.T3'에 중복 키를 삽입할 수 없습니다. 중복 키 값은 (a, b, c6)입니다.

게시에서 이미 INSERT 되어 있는 PK 키값과 동일한 값이 구독에 이미 INSERT 되어 있는 상황에서 복제 동기화 시도가 발생할 때 이와 같은 충돌이 감지됩니다. 이러한 제약조건 위반 2627 오류는 복제와 상관없이 기본키 관리에 대한 문제이며 구독이나 게시 양방향에서 같은 키값으로의 INSERT 는 발생하지 않도록 어플리케이션 로직이 점검이나 PK 제약조건 조정이 필요할 것입니다.

복제 충돌 뷰어를 대신하여 sp_helpmergedeleteconflictrows [ [ @publication = ] 'publication'] 프로시저를 사용하여 충돌이 발생한 테이블에 대해서 쿼리로 목록을 확인할 수 있으며 결과를 통해 게시/구독 모두 중복된 키값 삽입이 시도된 매개변수를 확인하고 게시나 구독 둘중 하나의 값을 수동으로 삭제한 뒤 병합 복제 동기화가 진행되면 Download insert 혹은 Upload insert를 시도하여 자동으로 복제가 진행되고 충돌을 제거할 수 있습다. 


작성자: Lai Go / 작성일자: 2019.10.15

Posted by Lai Go