MSSQL_ENG002627

적용 대상:SQL ServerAzure SQL Managed Instance

메시지 세부 정보

attribute
제품 이름 SQL Server
이벤트 ID 2627
이벤트 원본 MSSQLSERVER
구성 요소 SQL Server 데이터베이스 엔진
심볼 이름 해당 없음
메시지 텍스트 %ls 제약 조건 '%.*ls'의 위반입니다. 개체 '%.*ls'에 중복 키를 삽입할 수 없습니다.

설명

데이터베이스 복제 여부에 관계없이 발생할 수 있는 일반적인 오류입니다. 복제된 데이터베이스에서는 기본 키가 토폴로지 전체에서 적절하게 관리되지 않았기 때문에 일반적으로 오류가 발생합니다. 분산 환경에서는 동일한 값이 둘 이상의 노드에 있는 기본 키 열 또는 다른 고유 열에 삽입되지 않도록 해야 합니다. 가능한 원인은 다음과 같습니다.

  • 행에 대한 삽입 및 업데이트가 둘 이상의 노드에서 발생합니다. 트랜잭션 복제에 대한 병합 복제 및 업데이트 가능한 구독은 모두 충돌 검색 및 해결을 제공하지만, 한 노드에서만 지정된 행을 삽입하거나 업데이트하는 것이 좋습니다. 피어 투 피어 트랜잭션은 충돌 감지 및 해결 기능을 제공하지 않으므로 삽입과 업데이트를 분할해야 합니다.

  • 읽기 전용이어야 하는 구독자에 행이 삽입되었습니다. 업데이트할 수 있는 구독 또는 피어 투 피어 트랜잭션 복제를 사용하는 경우가 아니면 트랜잭션 게시에 대한 구독자와 마찬가지로 스냅샷 게시에 대한 구독자는 읽기 전용으로 취급되어야 합니다.

  • ID 열이 있는 테이블이 사용 중이지만 열이 적절하게 관리되지 않습니다.

사용자 작업

필요한 작업은 오류가 발생한 이유에 따라 달라집니다.

  • 행에 대한 삽입 및 업데이트가 둘 이상의 노드에서 발생합니다.

    사용되는 복제 유형에 관계없이 가능한 경우 삽입 및 업데이트를 분할하는 것이 좋습니다. 이렇게 하면 충돌 감지 및 해결에 필요한 처리가 줄어들기 때문입니다. 피어 투 피어 트랜잭션 복제의 경우 분할 삽입 및 업데이트가 필요합니다. 자세한 내용은 피어 투 피어 트랜잭션 복제를 참조 하세요.

  • 읽기 전용이어야 하는 구독자에 행이 삽입되었습니다.

    병합 복제, 업데이트할 수 있는 구독이 있는 트랜잭션 복제 또는 피어 투 피어 트랜잭션 복제를 사용하는 경우가 아니면 구독자에서 행을 삽입 또는 업데이트하지 마십시오.

  • ID 열이 있는 테이블이 사용 중이지만 열이 적절하게 관리되지 않습니다.

    변경 가능한 구독을 사용한 병합 복제 및 트랜잭션 복제의 경우 복제를 통해 ID 열을 자동으로 관리해야 합니다. 피어 투 피어 트랜잭션 복제의 경우 ID 열을 수동으로 관리해야 합니다. 자세한 내용은 ID 열 복제를 참조하세요.

참고 항목

오류 및 이벤트 참조(복제)
병합 복제
피어 투 피어 트랜잭션 복제
트랜잭션 복제에 대한 업다이블 구독