병합 복제에 대한 충돌 해결
적용 대상: SQL Server
병합 복제의 충돌은 각 아티클에 지정된 해결 프로그램을 기반으로 해결됩니다. 기본적으로 충돌은 사용자가 개입할 필요 없이 해결됩니다. 그러나 Microsoft 복제 충돌 뷰어에서 충돌을 보고 해결 결과를 변경할 수 있습니다.
충돌 데이터는 충돌 보존 기간(기본값: 14일)에 지정된 시간 동안 복제 충돌 뷰어에서 사용할 수 있습니다. 충돌 보존 기간을 설정하려면 다음 중 하나를 수행합니다.
sp_addmergepublication(Transact-SQL)의
@conflict_retention
매개 변수에 보존 값을 지정합니다.@property
매개 변수에 대해 conflict_retention 값을 지정하고 sp_changemergepublication(Transact-SQL)의@value
매개 변수에 대해 보존 기간 값을 지정합니다.
기본값으로, 충돌 정보는 저장됩니다.
- 게시자 및 구독자에서 게시 호환성 수준이 90RTM 이상인 경우.
- 게시자에서 게시 호환성 수준이 80RTM보다 낮은 경우.
- 게시자에서 구독자가 SQL Server Compact를 실행하는 경우. 충돌 데이터는 SQL Server Compact 구독자에 저장할 수 없습니다.
충돌 정보의 스토리지는 conflict_logging 게시 속성에 의해 제어됩니다. 자세한 내용은 sp_addmergepublication(Transact-SQL) 및 sp_changemergepublication(Transact-SQL)을 참조하세요.
Microsoft Interactive Resolver를 사용하여 동기화하는 동안 충돌을 대화형으로 해결할 수도 있습니다. 대화형 해결 프로그램은 Microsoft Windows 동기화 관리자를 통해 사용할 수 있습니다. 자세한 내용은 Windows 동기화 관리자를 사용하여 구독 동기화(Windows 동기화 관리자)를 참조하세요.
충돌 해결
SQL Server Management Studio에서 게시자(또는 해당할 경우 구독자)에 연결한 다음 해당 서버 노드를 확장합니다.
복제 폴더를 확장한 다음 로컬 게시 폴더를 확장합니다.
충돌을 확인할 게시를 마우스 오른쪽 단추로 클릭한 다음 충돌 보기를 클릭합니다.
참고 항목
conflict_logging 속성에 'subscriber' 값을 지정한 경우에는 충돌 보기 메뉴 옵션을 사용할 수 없습니다. 충돌을 보려면 명령 프롬프트에서 ConflictViewer.exe 시작합니다. 기본적으로 ConflictViewer.exe Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE 디렉터리에 있습니다. 유효한 시작 매개 변수 목록을 보려면 ConflictViewer.exe -?. 실행합니다.
충돌 테이블 선택 대화 상자에서 충돌을 볼 데이터베이스, 게시 및 테이블을 선택합니다.
복제 충돌 뷰어에서 다음을 할 수 있습니다.
위쪽 눈금의 오른쪽에 있는 버튼을 사용하여 행을 필터링합니다.
위쪽 눈금에서 행을 선택하여 해당 행의 정보를 아래쪽 표에 표시합니다.
상단 표에서 하나 이상의 행을 선택한 다음 제거를 클릭합니다. 이것은 적용되는 내용 전송 단추를 클릭하는 것과 같으며 데이터는 변경되지 않습니다.
속성 단추(...)를 클릭하여 충돌과 관련된 열에 대한 자세한 정보를 확인합니다.
데이터를 전송하기 전에 충돌 시 적용되는 내용 또는 충돌 시 변경 내용 무시 열의 데이터를 편집합니다. 열이 회색인 경우 데이터는 읽기 전용입니다.
승자 제출을 클릭하여 충돌의 승자로 지정된 행을 수락합니다.
패자 제출을 클릭하여 해결 방법을 재정의하고 충돌의 패자로 지정된 값을 토폴로지의 모든 노드에 전파합니다.
이 충돌의 세부 정보를 기록하여 충돌 데이터를 파일에 기록합니다. 파일의 위치를 지정하려면 보기 메뉴를 가리킨 다음 옵션을 클릭합니다. 값을 입력하거나 찾아보기 단추(...)를 클릭한 다음 적절한 파일로 이동합니다. 확인 을 클릭하여 옵션 대화 상자를 종료합니다.
복제 충돌 뷰어를 닫습니다.
충돌 정보 보기
병합 복제의 충돌이 해결될 때 손실되는 행의 데이터는 충돌 테이블에 기록됩니다. 이 충돌 데이터는 복제 저장 프로시저를 사용하여 프로그래밍 방식으로 볼 수 있습니다. 자세한 내용은 고급 병합 복제 충돌 검색 및 해결을 참조하세요.
게시 데이터베이스의 게시자에서 sp_helpmergepublication을 실행합니다. 결과 집합에서 다음 열의 값을 확인합니다.
centralized_conflicts - 1은 충돌 행이 게시자에 저장되고 0은 충돌 행이 게시자에 저장되지 않음을 나타냅니다.
decentralized_conflicts - 1은 충돌 행이 구독자에 저장되고 0은 충돌 행이 구독자에 저장되지 않음을 나타냅니다.
참고 항목
병합 게시의 충돌 로깅 방식은
@conflict_logging
의 @conflict_logging을(를) 참조하세요.@centralized_conflicts
매개 변수 사용이 중단되었습니다.
다음 표는
@conflict_logging
에 지정된 값을 기준으로 이러한 열 값에 대해 설명합니다.@conflict_logging 값 centralized_conflicts decentralized_conflicts publisher 1 0 subscriber 0 1 both 1 1 게시 데이터베이스의 게시자 또는 구독 데이터베이스의 구독자에서 sp_helpmergearticleconflicts을 실행합니다. 특정 게시에 속한 아티클에 대한 충돌 정보만 반환하려면
@publication
에 값을 지정합니다. 충돌이 있는 아티클에 대한 충돌 테이블 정보를 반환합니다. 정보를 보려는 아티클의 conflict_table 값을 확인합니다. 아티클에 대한 conflict_table 값이 NULL이면 이 아티클에서 삭제 충돌만 발생한 것입니다.필요에 따라 특정 아티클의 충돌 행을 검토합니다. 1단계에서 확인한 centralized_conflicts 및 decentralized_conflicts 값에 따라 다음 중 한 가지를 수행합니다.
게시 데이터베이스의 게시자에서 sp_helpmergeconflictrows을 실행합니다.
@conflict_table
에 아티클에 대한 충돌 테이블(1단계에서 확인)을 지정합니다. (옵션) 반환된 충돌 정보를 특정 게시로 제한할@publication
값을 지정합니다. 이렇게 하면 무시되는 행에 대한 행 데이터 및 기타 정보가 반환됩니다.구독 데이터베이스의 구독자에서 sp_helpmergeconflictrows을 실행합니다.
@conflict_table
에 아티클에 대한 충돌 테이블(1단계에서 확인)을 지정합니다. 이렇게 하면 무시되는 행에 대한 행 데이터 및 기타 정보가 반환됩니다.
삭제가 실패한 충돌
게시 데이터베이스의 게시자에서 sp_helpmergepublication을 실행합니다. 결과 집합에서 다음 열의 값을 확인합니다.
centralized_conflicts - 1은 충돌 행이 게시자에 저장되고 0은 충돌 행이 게시자에 저장되지 않음을 나타냅니다.
decentralized_conflicts - 1은 충돌 행이 구독자에 저장되고 0은 충돌 행이 구독자에 저장되지 않음을 나타냅니다.
참고 항목
병합 게시의 충돌 로깅 방식은 sp_addmergepublication의
@conflict_logging
매개 변수를 참조하세요.@centralized_conflicts
매개 변수 사용이 중단되었습니다.
게시 데이터베이스의 게시자 또는 구독 데이터베이스의 구독자에서 sp_helpmergearticleconflicts을 실행합니다. 특정 게시에 속한 아티클에 대한 충돌 테이블 정보만 반환하려면
@publication
에 값을 지정합니다. 충돌이 있는 아티클에 대한 충돌 테이블 정보를 반환합니다. 정보를 보려는 아티클의 source_object 값을 확인합니다. 아티클에 대한 conflict_table 값이 NULL이면 이 아티클에서 삭제 충돌만 발생한 것입니다.(옵션) 삭제 충돌에 대한 충돌 정보를 검토합니다. 1단계에서 확인한 centralized_conflicts 및 decentralized_conflicts 값에 따라 다음 중 한 가지를 수행합니다.
게시 데이터베이스의 게시자에서 sp_helpmergedeleteconflictrows을 실행합니다.
@source_object
에는 충돌이 발생한 원본 테이블의 이름(1단계에서 확인)을 지정합니다. (옵션) 반환된 충돌 정보를 특정 게시로 제한할@publication
값을 지정합니다. 게시자에 저장된 삭제 충돌 정보를 반환합니다.구독 데이터베이스의 구독자에서 sp_helpmergedeleteconflictrows을 실행합니다.
@source_object
에는 충돌이 발생한 원본 테이블의 이름(1단계에서 확인)을 지정합니다. (옵션) 반환된 충돌 정보를 특정 게시로 제한할@publication
값을 지정합니다. 구독자에 저장된 삭제 충돌 정보를 반환합니다.