증상
테이블에서 데이터를 삭제 하려고 하면 데이터가 Microsoft SQL Server 2016 2017에 다른 테이블에서 참조 하 고 가정 합니다. I f 쿼리를 살펴보면 실행 계획을 볼 수 있습니다 외래 키 참조를 확인 하는 연산자를 사용 하 여 .이 경우 는 다음과 같은 오류 메시지가 나타날 수 있습니다 경우에 행 되 고 삭제 된 다른 테이블에서 참조 되지 않는:
메시지 547, 수준 16, 상태 0, 줄 LineNumber
DELETE 문은 참조 제약 조건 충돌
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.
해결 방법
이 문제는 다음과 같은 SQL Server용 누적 업데이트에서 해결되었습니다.
참고: 이 문제는 SQL Server 2016 s p 2 용 누적 업데이트 6에서 해결 됩니다.
SQL Server 대 한 누적 업데이트.
SQL Server용 각각의 새로운 누적 업데이트는 모이전 누적 업데이트에 포함된 모든 핫픽스 및 보안 수정 프로그램을 포함합니다. SQL Server에 대한 최신 누적 업데이트를 확인해 보십시오.
해결 방법
이 문제를 해결 하려면 다음 방법 중 하나를 사용 합니다.
-
이 쿼리를 실행 하려면 130 아래 호환성 수준을 사용 합니다.
-
참조 하는 테이블에 인덱스 구조를 변경 합니다.
추가 정보
시작 데이터베이스 호환성 수준을 구성 범위 130 2016 SQL Server에서에서 쿼리 실행 계획을 외래 키 참조를 사용할 수 있습니다. 테이블의 행에서 다른 행 경우 참조를 확인 하기 위해 연산자를 확인 합니다. 참조 무결성 제약 조건을 통해 테이블입니다. 경우에 이러한 연산자를 사용할 수 있습니다. 테이블은 많은 수의 외래 테이블에서 참조 됩니다. 이 연산자에서 SQL Server 이러한 검사를 수행 하 여 참조 하는 각 테이블에서 인덱스를 선택 합니다. If 참조 테이블에 여러 키 열이 있는 인덱스는 이러한 일부 왼쪽 끝 열 외래 키가 있지만 다른에 속하지 않는 열이 외래 키의 일부입니다. 잘못 된 검사 수행이 될 수 있습니다. SQL Server 의해서.
예를 들어, 다음 스키마를 살펴보십시오.
표 tpk (pk int 제약 조건 만들기 클러스터 된 기본 키를 cpk)
(한 int, fk int 테이블 tfk 만들기 cfk 외래 키 참조 tpk 제약 조건, 인덱스 i a clustered(a,fk))
이러한 스키마만 변경 하는 경우이 문제가 발생할 수 있습니다. 열 순서 인덱스에 ia (fk, 한), 지 것입니다.
참조
정보는 용어Microsoft 소프트웨어 업데이트를 설명 하는 데 사용 하도록 합니다.