DBCC CheckDB को किस प्रकार का भ्रष्टाचार याद आ सकता है?


16

इस प्रश्न को इस पहले के पोस्ट से जोड़ा गया था और मेरे पास एक डेटाबेस था जिसे भविष्य की जांच के लिए दूर रखा गया था, जिसे निम्नलिखित में बहाल किया गया था:

BACKUP 'BrokenDatabase' detected an error on page (1:123456) in file BrokenDatabase.mdf'.
Error: 3043, Severity: 16, State: 1.

जुड़े प्रश्न और बैकअप में मैंने DBCC पेज की जांच के लिए तैयार किया है, DBCC CHECKDB बिना त्रुटि के पास हो गया है लेकिन भ्रष्टाचार स्पष्ट रूप से मौजूद है।

किस प्रकार का भ्रष्टाचार हो सकता है जिससे CHECKDB गुजर जाएगा लेकिन CHECKSUM वाला एक BACKUP विफल हो जाएगा?


1
हो सकता है, DBCC IND: कमांड टेबल या इंडेक्स द्वारा उपयोग किए गए पृष्ठों की सूची प्रदान करता है? आप तालिका, सूचकांक को देख सकते हैं जहां समस्या है।
गरिका

1
मैंने उन पृष्ठों का त्वरित विश्लेषण किया, जब समस्या उत्पन्न हुई थी। 30 मिनट के अध्ययन ने निष्कर्ष निकाला कि मुझे गलत काम करने के लिए 30 मिनट से अधिक की आवश्यकता होगी :) जब मैं इसे और अधिक विस्तार से देखने के लिए वापस आता हूं तो मैं उस मामले से संबंधित प्रश्न के साथ एक अलग प्रश्न पोस्ट करूंगा।
मार्क स्टोरी-स्मिथ

जवाबों:


10

निम्नलिखित उन परिणामों का संकलन है जिन्हें मैंने पढ़ा है। लिंक किए गए ब्लॉग और दस्तावेजों में आपको बहुत अधिक जानकारी मिलेगी।

सबसे पहले, यह हो सकता है कि DBCC CHECKDBअगर आप चेकसम या टर्न_पेज सत्यापन बंद करते हैं तो विसंगतियों का पता नहीं चलेगा। इस पोस्ट में पॉल रैंडल का एक उद्धरण :

आप सही हैं - यदि फटे-पृष्ठ या चेकसम चालू नहीं हैं, तो ऐसा कुछ भी नहीं है, जिसका पता लगाया जा सके, जहां तक ​​पृष्ठ संरक्षण विकल्पों का सवाल है। CHECKDB अभी भी उन भ्रष्टाचारों को उठा सकता है, जो यह करता है कि वह जो भी करता है - सभी स्थिरता जांच करने से पाता है - लेकिन यह उदाहरण के लिए, डेटा मानों के बीच में भ्रष्टाचार नहीं देखेगा।

हा - यह पृष्ठ चेकसमों को चालू करने के बारे में बमर है - जब तक एक पृष्ठ में पढ़ा नहीं जाता है, तब तक कुछ नहीं होता है, और वापस लिखा जाता है। चेकसम को प्राप्त करने के लिए पृष्ठों को बाध्य करने का एकमात्र तरीका उन्हें बदलना है - जैसे कि आपके सभी अनुक्रमों के पुनर्निर्माण के माध्यम से, जो अनछुए हो सकते हैं - वहाँ कोई 'स्पर्श' उपकरण नहीं है।

यदि आप SQL Server 2000 या 2005 से पहले या बाद के डेटाबेस को अपग्रेड करते हैं, तो उपरोक्त स्थिति आपको प्रभावित कर सकती है। फिर आपको उन्हें सक्रिय करने के लिए ALTER DATABASE के साथ पेज चेकसम को मैन्युअल रूप से सक्षम करने की आवश्यकता है। लेकिन फिर उपरोक्त उद्धरण का दूसरा पैराग्राफ आपको परेशान करता है और आपको परेशान कर सकता है।

BACKUP WITH CHECKSUMचेकसम विसंगतियों का पता लगाएगा, लेकिन केवल तभी जब पेज में पहले से ही एक चेकसम लिखा हो, जब उसका बैकअप लिया जा रहा हो। आम तौर पर DBCC CHECKDBइन त्रुटियों का भी पता लगाता है, इसलिए DBCC CHECKDB को बदलने के लिए CHECKSUM के साथ BACKUP का उपयोग करना अच्छा नहीं है

अब DBCC CHECKDBकोई असंगति न दिखाने की दूसरी संभावना है , भले ही कुछ हों। इसके लिए मैं पॉल रैन्डल को भ्रांतियों के चारों ओर गलतफहमी में फिर से उद्धृत कर रहा हूं : क्या वे गायब हो सकते हैं? :

तो लुप्त हो रहे भ्रष्टाचारों का क्या? यह इस बात पर निर्भर करता है कि स्थिरता जांच कैसे काम करती है। संगणना जाँच केवल उन डेटाबेस के पन्नों पर चलती है जिन्हें आवंटित किया गया है। यदि किसी पृष्ठ को कुछ भी आवंटित नहीं किया जाता है, तो इसके 8192 बाइट अर्थहीन हैं और इसकी व्याख्या नहीं की जा सकती है। आरक्षित और आबंटित के बीच भ्रमित न हों - मैं समझाता हूँ कि यहाँ पहले गलत धारणाएँ हैं। जब तक किसी पृष्ठ को आवंटित किया जाता है, तब तक DBCC CHECKDB द्वारा जाँच की जाती है, यदि यह मौजूद है, तो पृष्ठ चेकसम का परीक्षण करना भी शामिल है। यदि एक DBCC CHECKDB रन के समय एक भ्रष्ट पृष्ठ आवंटित किया जाता है, तो एक भ्रष्टाचार गायब हो सकता है, लेकिन अगले DBCC CHECKDB रन के समय तक इसे हटा दिया जाता है। पहली बार इसे भ्रष्ट के रूप में रिपोर्ट किया जाएगा, लेकिन दूसरी बार इसे आवंटित नहीं किया गया है, इसलिए यह निरंतरता की जाँच नहीं है और इसे भ्रष्ट नहीं बताया जाएगा। भ्रष्टाचार ऐसा लगता है जैसे यह रहस्यमय तरीके से गायब हो गया है। लेकिन यह नहीं है - यह सिर्फ इतना है कि भ्रष्ट पृष्ठ अब आवंटित नहीं किया गया है। SQL सर्वर को दूषित पृष्ठ से हटाते हुए कुछ भी नहीं है - वास्तव में, यह है कि DBCC CHECKDB मरम्मत में से कई - क्या टूटी हुई है, और सभी लिंक को ठीक करें।

मेरे पास आपके प्रश्न का अंतिम उत्तर नहीं है, लेकिन DBCC CHECKDBकेवल आवंटित पृष्ठों की जांच के रूप में यह अस्वीकृत पृष्ठों में असंगतता नहीं दिखाएगा। एकमात्र स्थिति जिसकी मैं अभी कल्पना कर सकता हूं, वह यह है कि BACKUP उन चेकडॉलेटेड पृष्ठों का भी बैकअप लेता है, जो संभावित चेकसम त्रुटियों को दिखाते हैं, जिन्हें छोड़ दिया गया था DBCC CHECKDB


सारांश के लिए पॉल के अधिकांश लेख पहले से ही बुकमार्क किए गए हैं, लेकिन +1 है। इनमें से कोई भी उस डेटाबेस पर लागू नहीं होता है जिसे मैंने अलग रखा है ताकि दूसरों को आगे के विचारों को जोड़ने की उम्मीद हो।
मार्क स्टोरी-स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.