다음을 통해 공유


MSSQL_ENG002601

메시지 세부 정보

제품 이름 SQL Server
이벤트 ID 2601
이벤트 원본 MSSQLSERVER
구성 요소 SQL Server 데이터베이스 엔진
심볼 이름 해당 없음(N/A)
메시지 텍스트 고유한 인덱스 '%.*ls'을(를) 사용하여 개체 '%.*ls'에 중복 키 행을 삽입할 수 없습니다.

설명

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

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

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

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

  • 병합 복제에서 이 오류는 시스템 테이블에 삽입하는 동안에도 발생할 수 MSmerge_contents; 발생한 오류는 다음과 유사합니다. 'ucl1SycContents'라는 고유 인덱스가 있는 'MSmerge_contents' 개체에 중복 키 행을 삽입할 수 없습니다.

사용자 작업

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

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

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

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

    구독자에서 행을 삽입하거나 업데이트하지 마세요. 다만, 병합 복제, 업데이트 가능한 구독을 가진 트랜잭션 복제, 또는 피어 투 피어 트랜잭션 복제를 사용하는 경우는 예외입니다.

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

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

  • 시스템 테이블 MSmerge_contents 삽입하는 동안 오류가 발생합니다.

    이 오류는 조인 필터 속성 join_unique_key 잘못된 값 때문에 발생할 수 있습니다. 부모 테이블의 조인된 열이 고유한 경우에만 이 속성을 TRUE로 설정해야 합니다. 속성이 TRUE로 설정되어 있지만 열이 고유하지 않으면 이 오류가 발생합니다. 이 속성을 설정하는 방법에 대한 자세한 내용은 병합 아티클 간의 조인 필터 정의 및 수정을 참조하세요.

또한 참조하십시오

오류 및 이벤트 참조(복제)