मेरे पास एक स्थानिक सूचकांक है जिसके लिए DBCC CHECKDB
भ्रष्टाचार रिपोर्ट करता है:
DBCC CHECKDB(MyDB)
WITH EXTENDED_LOGICAL_CHECKS, DATA_PURITY, NO_INFOMSGS, ALL_ERRORMSGS, TABLERESULTS
स्थानिक सूचकांक, एक्सएमएल इंडेक्स या इंडेक्सेड व्यू 'sys.extended_index_xxx_384000' (ऑब्जेक्ट आईडी xxx) में वे सभी पंक्तियाँ नहीं होती हैं जो व्यू डेफिनेशन उत्पन्न करती हैं। यह आवश्यक रूप से इस डेटाबेस में डेटा के साथ एक अखंडता मुद्दे का प्रतिनिधित्व नहीं करता है।
स्थानिक सूचकांक, XML सूचकांक या अनुक्रमित दृश्य 'sys.extended_index_xxx_384000' (ऑब्जेक्ट आईडी xxx) में वे पंक्तियाँ होती हैं जो दृश्य परिभाषा द्वारा निर्मित नहीं थीं। यह आवश्यक रूप से इस डेटाबेस में डेटा के साथ एक अखंडता मुद्दे का प्रतिनिधित्व नहीं करता है।
CHECKDB को तालिका। Sys.extended_index_xxx_384000 ’(ऑब्जेक्ट आईडी xxx) में 0 आवंटन त्रुटियां और 2 संगतता त्रुटियां मिलीं।
मरम्मत के स्तर का है repair_rebuild
।
अनुक्रमणिका को छोड़ने और फिर से बनाने से इन भ्रष्टाचार रिपोर्टों को हटाया नहीं जाता है। बिना EXTENDED_LOGICAL_CHECKS
लेकिन DATA_PURITY
त्रुटि के साथ रिपोर्ट नहीं की गई है।
CHECKTABLE
इस तालिका के लिए 45 मिनट लगते हैं , हालांकि इसका सीआई 30 एमबी आकार का है और लगभग 30k पंक्तियाँ हैं। उस तालिका का सभी डेटा बिंदु 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) है।
मैंने स्कीमा और डेटा के साथ तालिका को स्क्रिप्ट किया, ताजा डीबी, निष्पादित करें। वही त्रुटि। CHECKDB में 45min का यह अविश्वसनीय रनटाइम भी है। मैंने SQL Profiler का उपयोग करके CHECKDB क्वेरी योजना पर कब्जा कर लिया। यह एक गुमराह पाश है जाहिर है अत्यधिक रनटाइम के कारण। योजना में तालिका की पंक्तियों की संख्या में द्विघात रनटाइम है! निस्संदेह नेस्टेड स्कैनिंग लूप जुड़ता है।
सभी गैर-स्थानिक अनुक्रमित समाशोधन से कुछ भी नहीं बदलता है।