破損を報告する空間インデックスがあり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のサイズは30 MBで、約3万行ありますが、このテーブルには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次ランタイムがあります!二重にネストされたスキャンループ結合。
すべての非空間インデックスをクリアしても、何も変わりません。