SQL Server에서 병합 복제 동기화 중에 병합 에이전트가 실패할 수 있습니다.

BUG #: 171429 (Content Maintenance)

증상

Microsoft SQL Server 2008 및 이후 버전의 SQL Server에서 병합 복제를 동기화하는 동안 병합 에이전트가 실패할 수 있습니다. 또한 다음과 같은 오류 메시지가 나타납니다.

병합 에이전트는 보존 기반 메타데이터 정리가 아직 게시자에게 전송되지 않은 변경 내용에 대해 구독자에서 메타데이터를 삭제했다는 것을 검색한 후 실패했습니다. 업로드 하지 않고 구독을 다시 초기화 해야 합니다. (출처: MSSQL_REPL, 오류 번호: MSSQL_REPL-214719401) 도움말: http://help/MSSQL_REPL-2147199401

이 문제는 여러 가지 이유로 발생할 수 있습니다. 여기에는 특정 상황에서 예상되는 많은 이유가 포함됩니다. 예기치 않게 이 오류가 발생했는지 확인하려면 "원인" 절에 설명된 메타데이터 세부 정보를 검사합니다.

원인

이 문제의 원인은 구독자의 다음 시스템 테이블에서 찾을 수 있습니다.

  • dbo.sysMergeSubscriptions

  • dbo.MsMerge_Genhistory

병합 에이전트가 더 이상 동기화되지 않았는지 확인합니다. 그런 다음 다음 쿼리를 실행하고 결과를 검사합니다.

구독자DB.dbo.sysMergeSubscriptions에서 전송을 선택 pubid = subid 및 sentgen이 null이 아닌 경우 Query results sentgen 열은 구독자가 게시자에게 보낸 가장 오래된 변경 그룹을 표시합니다. 여러 값이 반환되는 경우 dbo.sysMergeSubscriptions 테이블의 다른 열을 검사하여 올바른 게시에 대한 메타데이터를 보고 있는지 확인합니다. 그런 다음 다음 쿼리에서 이 쿼리가 반환하는 값을 사용합니다.

세대 >= 세대별로 sentgen_value 순서를 생성 >= 가입자DB.dbo.MSmerge_genhistory 에서 상위 20 * 선택쿼리의 출력은 다음과 유사해야 Query result by generation 합니다.

  • 첫 번째 행의 생성 열의 값은 이전 쿼리의 sentgen 값보다 약간 큽습니다.

  • genstatus 열의 값은 4입니다.

  • 변경 카운트 열의 값은 0입니다.

참고 사항 첫 번째 행의 coldate 열 값은 일반적으로 다른 행의 해당 열 값보다 훨씬 오래됩니다.

해결 방법

이 문제를 해결하려면 오류를 생성한 구독자를 다시 초기화합니다. 일부 시나리오에서는 전체 초기화 없이 이 문제를 해결할 수 있습니다. 가능한 해결 방법을 보려면 Microsoft 고객 지원 서비스에 문의하십시오. 이 문제가 나중에 발생하지 않도록 하려면 SQL Server 버전에 따라 다음 수정 사항 중 하나를 적용합니다.

누적 업데이트 정보

SQL Server 2008

SQL Server 2008에는 이 문제에 대한 수정 프로그램이 없습니다.

SQL Server 2008 R2 서비스 팩 2

이 문제에 대한 수정 프로그램은 누적 업데이트 3에서 처음 릴리스되었습니다. SQL Server 2008 R2 서비스 팩 2에 대한 이 누적 업데이트 패키지를 가져오는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 봅니다.

SQL Server 2008 R2 서비스 팩 2에 대한 2754552 누적 업데이트 패키지 3참고 사항 빌드가 누적되므로 각 새 수정 릴리스에는 이전 SQL Server 2008 R2 서비스 팩 2 수정 릴리스에 포함된 모든 핫픽스와 모든 보안 수정 사항이 포함되어 있습니다. 이 핫픽스가 포함된 최신 수정 릴리스를 적용하는 것이 좋습니다. 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 봅니다.

2730301 SQL Server 2008 R2 서비스 팩 2가 릴리스된 후 릴리스된 SQL Server 2008 R2 빌드

SQL Server 2012

이 문제에 대한 수정 프로그램은 누적 업데이트 4에서 처음 릴리스되었습니다. SQL Server 2012에 대한 이 누적 업데이트 패키지를 가져오는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 봅니다.

SQL Server 2012에 대한 2758687 누적 업데이트 패키지 4참고 사항 빌드가 누적되므로 각 새 수정 릴리스에는 이전 SQL Server 2012 수정 릴리스에 포함된 모든 핫픽스와 모든 보안 수정 사항이 포함되어 있습니다. 이 핫픽스가 포함된 최신 수정 릴리스를 적용하는 것이 좋습니다. 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 봅니다.

2692828 SQL Server 2012 릴리스 후 릴리스된 SQL Server 2012 빌드

SQL Server 2008 R2 서비스 팩 1

이 문제에 대한 수정 프로그램은 누적 업데이트 8에서 처음 릴리스되었습니다. SQL Server 2008 R2 서비스 팩 1에 대한 이 누적 업데이트 패키지를 가져오는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 봅니다.

SQL Server 2008 R2 SP1의 누적 업데이트 패키지 8 2723743참고 사항 빌드가 누적되므로 각 새 수정 릴리스에는 이전 SQL Server 2008 R2 서비스 팩 1 수정 릴리스에 포함된 모든 핫픽스와 모든 보안 수정 사항이 포함되어 있습니다. 이 핫픽스가 포함된 최신 수정 릴리스를 적용하는 것이 좋습니다. 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 봅니다.

2567616 SQL Server 2008 R2 SP1 릴리스 후 릴리스된 SQL Server 2008 R2 빌드

Workaround

To work around this issue and recover from the merge agent failure, update the cleanedup_unsent_changes column and the genstatus column in the tables that you previously queried. To perform the updates, use queries such as the following:

update SubscriberDB.dbo.sysMergeSubscriptions set cleanedup_unsent_changes = 0 where sentgen = sentgen

update SubscriberDB.dbo.MSmerge_genhistory set genstatus = 2 where generation = first row from other queryFrom these example queries, the value of the sentgen placeholder would be 7253913 and the value of the first row from other query placeholder would be 7253914. Your values will be different.

After the tables are updated, restart the merge agent, and wait for synchronization to be complete. When synchronization is complete, run the following query again, and see whether the sentgen value increased:

select sentgen from SubscriberDB.dbo.sysMergeSubscriptions where pubid = subid and sentgen is not nullIf the agent is successful, and if the sentgen value increased, you successfully worked around the failure.

Author: jonclark
Writer: v-thomr
Tech Review: jonclark; ramakoni
Editor: v-anwale,v-rhowar

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

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

이 정보가 유용한가요?

번역 품질에 얼마나 만족하시나요?

사용 경험에 어떠한 영향을 주었나요?

추가 피드백이 있으신가요? (선택 사항)

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

×