손상 을 보고 하는 공간 인덱스 가 있습니다 DBCC CHECKDB
.
DBCC CHECKDB(MyDB)
WITH EXTENDED_LOGICAL_CHECKS, DATA_PURITY, NO_INFOMSGS, ALL_ERRORMSGS, TABLERESULTS
공간 인덱스, XML 인덱스 또는 인덱싱 된 뷰 'sys.extended_index_xxx_384000'(개체 ID xxx)에 뷰 정의가 생성하는 모든 행이 포함되어 있지 않습니다. 이것은 반드시이 데이터베이스의 데이터에 대한 무결성 문제를 나타내는 것은 아닙니다.
공간 인덱스, XML 인덱스 또는 인덱싱 된 뷰 'sys.extended_index_xxx_384000'(개체 ID xxx)에는 뷰 정의에 의해 생성되지 않은 행이 포함됩니다. 이것은 반드시이 데이터베이스의 데이터에 대한 무결성 문제를 나타내는 것은 아닙니다.
CHECKDB가 테이블 'sys.extended_index_xxx_384000'(객체 ID xxx)에서 0 개의 할당 오류와 2 개의 일관성 오류를 발견했습니다.
수리 수준은 repair_rebuild
입니다.
인덱스를 삭제하고 다시 생성해도 이러한 손상 보고서는 제거되지 않습니다. 없이 EXTENDED_LOGICAL_CHECKS
하지만 함께 DATA_PURITY
오류가보고되지 않습니다.
또한 CHECKTABLE
CI의 크기가 30MB이고 행이 약 30k이지만이 테이블에 45 분이 걸립니다. 해당 테이블의 모든 데이터는 포인트 geography
데이터입니다.
어떤 상황에서도이 동작이 예상됩니까? "이것은 반드시 무결성 문제를 나타내는 것은 아닙니다"라고 말합니다. 어떻게해야합니까? CHECKDB
실패하고있는 문제입니다.
이 스크립트는 문제를 재현합니다.
CREATE TABLE dbo.Cities(
ID int NOT NULL,
Position geography NULL,
CONSTRAINT PK_Cities PRIMARY KEY CLUSTERED
(
ID ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
INSERT dbo.Cities (ID, Position) VALUES (20171, 0xE6100000010C4E2B85402E424A40A07312A518C72A40)
GO
CREATE SPATIAL INDEX IX_Cities_Position ON dbo.Cities
(
Position
)USING GEOGRAPHY_AUTO_GRID
WITH (
CELLS_PER_OBJECT = 16, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
버전 12.0.4427.24 (SQL Server 2014 SP1 CU3)입니다.
스키마와 데이터, 신선한 DB, 실행으로 테이블을 스크립팅했습니다. 같은 오류입니다. CHECKDB는 또한이 놀라운 런타임 45 분을 갖습니다. SQL Profiler를 사용하여 CHECKDB 쿼리 계획을 캡처했습니다. 루프 조인이 잘못되어 과도한 런타임이 발생하는 것 같습니다. 계획에는 테이블의 행 수에 2 차 런타임이 있습니다! 이중 중첩 스캐닝 루프 조인.
비 공간 인덱스를 모두 지우면 아무 것도 변경되지 않습니다.