증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
Microsoft SQL Server 2014에는 두 개의 분할 된 테이블이 있으며, 첫 번째 테이블의 파티션은 동일한 파티션 구성표와 함수를 사용 하 여 다른 파일 및 파일 그룹에 매핑됩니다.
-
이러한 파티션 중 하나를 두 번째 테이블로 전환한 다음 두 번째 테이블을 자릅니다.
-
스위치 파티션으로 매핑되는 파일과 파일 그룹을 삭제 합니다.
-
두 번째 테이블에서 SELECT 문을 실행 합니다.
이 경우 다음과 유사한 내용의 오류 메시지가 나타납니다.
메시지 606, 수준 21, 상태 1Metadata 데이터 불일치. 테이블에 대해 지정 된 파일 그룹 id<filegroup id> <테이블 이름> 존재 하지 않습니다. DBCC CHECKDB 또는 CHECKCATALOG를 실행 합니다.
DBCC CHECKDB/CHECKTABLE를 실행 하면 다음과 같은 오류 메시지가 나타납니다.
Filegroup (FileGroup ID <Filegroupnumber>) IndexName 가 유효 하지 않기 때문에 테이블 <TableName>> <index를 처리할 수 없습니다.
해결 방법
이 문제는 SQL Server의 다음과 같은 누적 업데이트에서 처음 수정 되었습니다.
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 다운로드 하 여 설치 하는 것이 좋습니다.
참고 이 수정은 향후이 문제가 발생 하지 않도록 방지 합니다. 이미이 문제가 발생 하는 경우 기존 메타 데이터 손상 없이 최신 데이터베이스로 데이터를 내보내십시오. 이렇게 하려면 다음 단계를 수행하세요.
-
파티션에 잘못 된 파일 그룹이 있는지 여부를 확인 하려면 다음 쿼리를 실행 하 여 결과를 반환 하는 경우 확인 합니다.
SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
-
메타 데이터로 손상 된 테이블을 다시 볼 수 있도록 합니다. 1 단계의 쿼리가 결과를 반환 하는 경우 메타 데이터가 손상 된 파티션으로 인해 테이블의 모든 행을 볼 수 없습니다 (선택 * 시작). 이 문제를 해결 하려면 해당 하는 잘못 된 파티션을 제거 합니다.참고 잘못 된 파티션은 비어 있어야 합니다. 그렇지 않으면 파일과 파일 그룹이 삭제 되거나 삭제 되지 않았을 수 있습니다. 이렇게 하려면이 파티션을 같은 파티션 구성표를 사용 하는 다른 테이블로 이동 합니다. 이 표는 더미 테이블 일 수 있습니다. 1 단계의 쿼리에서 container_id를 사용 하 고이를 sys. 파티션의 partition_id와 일치 시킵니다. (Partition_number를 기록해 두어야 합니다.) Partition_number를 사용 하 여 더미 테이블로 unviewable 된 테이블에서 ALTER TABLE SWITCH 파티션을 수행 합니다. 더미 테이블은 동일한 열 집합을 포함 하 고 동일한 파티션 구성표를 사용 해야 합니다. 일치 하지 않는 파티션을 찾는 쿼리는 다음과 같이 표시 될 수 있습니다.
SELECT au.container_id, au.data_space_id, p.partition_number FROM sys.partitions AS p JOIN sys.allocation_units AS au ON p.partition_id = au.container_id LEFT JOIN sys.filegroups AS fgs ON fgs.data_space_id = au.data_space_id WHERE object_id = OBJECT_ID('MyTableName') AND fgs.data_space_id IS NULL;
-
이전 unviewable 테이블에서 새 데이터베이스로 데이터를 복사 합니다.
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.