PRB: 비-수렴 SQL Server 프로세스에서 별도 생성 일괄 처리 자식 및 부모 세대 때

증상

구독자에서 자식 테이블에 INSERT 명령의 손실을 다음과 같은 조건에서 발생할 수 있습니다.

  • 병합 복제 토폴로지에서 게시자, 하나 이상의 재게시자 및 하나 이상의 구독자를 사용 하 여 계층적입니다.

  • 부모 및 자식 아티클을 하나 이상 간에 정의 된 조인 필터를 사용 하 여 병합 복제 게시를 존재 합니다.

  • NOT FOR REPLICATION 외래 키 제약 조건을 재게시자 및 구독자 이러한 두 문서 사이의 관계에 있습니다.

  • 하위 문서에 삽입 -DownloadGenerationsPerBatch 병합 에이전트 매개 변수에서 지정한 값 이상으로 연결 된 부모 생성에서 별도 세대에 발생 합니다. 따라서 병합 에이전트는 일괄 세대 연결 된 부모 생성에서 별도 자식 생성을 처리합니다.

  • 병합 게시자 및 재게시자 사이 부모 및 자식 생성 일괄 처리 처리 간의 처리를 중단 하는 경우

 

해결 방법

병합 복제 아키텍처 부모 및 자식 변경 유지 함께 세대를 통해 일괄 처리 경계 하는 메커니즘을 제공 하지 않습니다. 이 문제를 해결 하려면 다음 중 하나를:

  • 증가- UploadGenerationsPerBatch 및- DownloadGenerationsPerBatch 병합 에이전트가 매개 변수를 거의 상위 문서에서 별도 일괄 처리에는 하위 문서 생성 처리의 가능성을 제거 하는 2000 년의 최대 값입니다.

-또는-

  • 재게시자에서 외래 키 제약 조건에 NOT FOR REPLICATION 속성을 제거 합니다. 이 경우 병합 에이전트를 관련된 부모 아티클 행이 없기 때문에 하위 문서에 행을 삽입할 수 없습니다. 그러나 염두에, 있는 있을 성능 저하를 연관 시킬 수 변경. 병합 에이전트가 이러한 자식 행을 삽입할 수 없는 경우 이러한 변경 내용은 "다시 시도해 야 합니다." 병합 에이전트가 재시도 프로세스의 일괄 처리는 보통 모드 보다 훨씬 더 효율적입니다.

자세한 내용

보다 자세한이 문제는 이벤트 시퀀스는 다음과 같습니다. Note 기본값 (주로이 문제에 어떤 곰)는 100- UploadGenerationsPerBatch 및- DownloadGenerationsPerBatch 병합 에이전트 매개 변수입니다. 다음 예제에서는 가정- UploadGenerationsPerBatch 및- DownloadGenerationsPerBatch 매개 변수가 변경 되지 않은.

  • 삽입 하위 및 상위 문서에 최상위 게시자에서 발생합니다. 하위 문서의 부모 아티클로 참조 하는 다른 테이블에 외래 키 제약 조건이 있는 발행물의 모든 문서가입니다. 병합 복제 조인 필터 관련 이러한 두 문서 및 있는 실제 서버 쪽 외래 키 제약 조건을 재게시자 및 구독자 NOT FOR REPLICATION 속성으로 표시 됩니다. 여부를 확인 제약 조건 하지 복제에 대해 확실 하지 않은 경우 테이블의 sp_help 저장 프로시저를 실행할 수 있습니다.

  • 자식 테이블에 삽입 110 세대에서 (예를 들어) 발생합니다. 부모 테이블로 삽입 250 세대에서 (예를 들어) 발생합니다. 참고 이러한 세대 구분- DownloadGenerationsPerBatch 매개 변수 보다 큽니다.

  • 병합 에이전트가 게시자-재게시자 세대 세대, 101-200를 포함 하는 일괄 처리를 처리 합니다. 이 일괄 처리의 성공적인 처리 하 고 재게시자 해당 세대의 관련 변경 내용을 다운로드 한 후 병합 에이전트가 게시자-재게시자 중단 되었습니다. 중단에는 병합 에이전트가 세대 201에서 300 (부모 문서의 변경 내용이 포함 된)를 처리할 수 있습니다 전에 발생 합니다. 중단 손실 네트워크 연결, 쿼리 시간 제한 등으로 인해 수 있습니다. 참고 서버 쪽 외래 키 제약 조건이 복제용 아님, 따라서 "일시 중지" check 제약 조건으로 표시 되어 병합 에이전트가 부모 행 제외한 문서의 자식 행을 커밋할 수 있습니다.

  • 재게시자 구독자의 병합 에이전트가 게시자 재게시자 병합 에이전트 처리를 다시 시작 되기 전에 병합 세션을 시작 합니다. 재게시자에서 변경 내용을 다운로드 하는 과정을 시작 합니다.

  • 생성 110 재게시자 구독자의 병합 에이전트가 처리 하는 경우 (하위 문서 삽입), 현재 상위 문서와 하위 문서 간의 조인 필터를 계산 합니다. 부모 아티클 변경 내용을 재게시자에 아직 도착 하지 한 때문에 병합 에이전트는 이러한 자식 삽입 "해결할 수 없는" 조인 필터를 결정 합니다. 병합 에이전트가 해당 세대에 세대 110, 있지만 변경 나타내는 MSmerge_genhistory 행을 다운로드 합니다. 이 병합 에이전트가 해당 세션을 성공적으로 완료.

  • 게시자 및 재게시자 사이 병합 에이전트의 후속 실행을 성공적으로 세대 부모 문서 삽입 (201에서 300 세대)을 포함 하는 일괄 처리 하 고 재게시자에서 변경 내용을 커밋합니다.

  • 마지막으로, 재게시자 및 구독자 간에 후속 병합 에이전트 세션 생성 250 간주 하 고 부모 문서 삽입을 구독자에 다운로드. 그러나 구독자 생성 110 (하위 문서 생성) 또한 알고 있으므로 병합 에이전트가 평가 하지 않습니다 다시 하위 문서 분할.

    이 인해 구독자의 해당 재게시자 "고아" 자식 행을 사용 하 여 존재 하 고 올바른 부모 아티클 행.

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

소중한 의견에 감사드립니다.

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×