이상하게도 내 저장 프로 시저가 일부 입력 데이터에 대해 메시지 666을 받기 시작했습니다.
다음 구조의 테이블에 행을 삽입하려고하면 마지막 단계에서 저장 프로 시저가 실패합니다.
Columns:
A_Id: PK, int
B_Id: PK, FK, int
C_Id: PK, FK, int
D_Id: PK, smallint
기본적으로 모든 참조 된 엔터티를 연결하는 테이블입니다.
Indexes:
IX_TableName_D_id - Clustered index on D_id column
PK_TableName - Unique non-clustered index on all columns (A_Id, B_Id, C_Id, D_Id)
두 인덱스 모두의 조각화가 낮습니다 (<25 %). 그러나 PK_TableName 조각화는 테이블의 작업량이 상당히 많기 때문에 빠르게 커집니다.
테이블 사이즈 :
Row count: ~80,000,000 rows
그래서 veeery simple query를 실행하려고하면 D_Id 중 일부에 대해 다음 메시지가 표시됩니다.
메시지 666. 파티션 ID가 422223771074560 인 인덱스에 대해 중복 그룹에 대한 최대 시스템 생성 고유 값을 초과했습니다. 인덱스를 삭제하고 다시 만들면이 문제가 해결 될 수 있습니다. 그렇지 않으면 다른 클러스터링 키를 사용하십시오.
쿼리 예 :
INSERT INTO TableName
(A_Id,B_Id,C_Id,D_id)
VALUES (1,1,1,14)
예를 들어 D_Id를 일부 값으로 설정하면 실패합니다 (예 : '14'). D_ID를 다른 값 (1,2,3, ... 13, 15,16, ...)으로 설정하면 쿼리가 제대로 실행됩니다.
인덱스에 문제가 있다고 생각합니다 ...하지만 이것의 바닥에 도달 할 수는 없습니다 ... :( 왜 실패합니까?
TRUNCATE TABLE
고유자를 재설정 하는지 확인할 수 있습니까?