Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर इंडेक्स भ्रष्टाचार को सुधारने के लिए नि:शुल्क तरीके

यह आलेख SQL डेटाबेस में अनुक्रमणिका के महत्व को साझा करता है। साथ ही, यह संकुल और गैर संकुल अनुक्रमित का एक संक्षिप्त अवलोकन प्रदान करता है। इसके अलावा, आलेख SQL सर्वर अनुक्रमणिका भ्रष्टाचार के कारणों, किसी भी दूषित अनुक्रमणिका की पहचान करने के कारकों और इसे ठीक करने के तरीकों पर चर्चा करता है।

SQL सर्वर में अनुक्रमणिका तालिका या दृश्य से पंक्तियों को पुनः प्राप्त करने की प्रक्रिया को गति देने में मदद करती है। हालांकि, क्वेरी प्रदर्शन को बेहतर बनाने के लिए इंडेक्स का सही चुनाव महत्वपूर्ण है। SQL सर्वर संकुल और गैर संकुल अनुक्रमणिका का समर्थन करता है। इनमें से किसी भी इंडेक्स में भ्रष्टाचार के कारण पंक्तियों को लाने में देरी हो सकती है। साथ ही, कुछ पंक्तियों को पुनर्प्राप्त करते समय आपको भिन्न या हटाए गए मान मिल सकते हैं। इसके अलावा, टेबल पर दूषित इंडेक्स के कारण सबसे लंबे समय तक चलने वाली क्वेरी दोषपूर्ण हो सकती हैं।

स्थिति जो भी हो, SQL सर्वर डेटाबेस वर्कफ़्लो को प्रभावित होने से रोकने के लिए आपको इंडेक्स में भ्रष्टाचार को नियत समय में सुधारना होगा।

सूचकांक भ्रष्टाचार के निवारण के तरीकों पर चर्चा करने से पहले, आइए संक्षेप में क्लस्टर और गैर-संकुल अनुक्रमणिका का अवलोकन करें।

संकुल और गैर-संकुल अनुक्रमणिका का अवलोकन

किसी तालिका में किसी स्तंभ पर प्राथमिक कुंजी बाधा लागू करने से स्तंभ पर संकुल अनुक्रमणिका बन जाती है। एक संकुल सूचकांक डेटा को भौतिक रूप से सॉर्ट करता है और डेटा को उसकी परिभाषित अनुक्रमणिका कुंजी के आधार पर एक तालिका में संग्रहीत करता है। चूंकि हम डेटा को केवल एक ही क्रम में सॉर्ट कर सकते हैं, इसलिए एक से अधिक क्लस्टर इंडेक्स होना संभव नहीं है।

हालांकि, एक गैर-संकुल सूचकांक तालिका में पंक्तियों से अलग डेटा को सॉर्ट और संग्रहीत करता है। अनिवार्य रूप से, यह संबंधित तालिका के लिंक वाले तालिका डेटा के स्तंभों की एक प्रति है। क्लस्टर्ड इंडेक्स के विपरीत, आपके पास एक या अधिक गैर-क्लस्टर इंडेक्स हो सकते हैं।

SQL सर्वर अनुक्रमणिका भ्रष्टाचार का क्या कारण है?

इंडेक्स समय के साथ बहुत अधिक खंडित हो सकते हैं (बल्क इंसर्ट, अपडेट या डिलीट ऑपरेशंस के कारण) और समय-समय पर रखरखाव की आवश्यकता होती है। खंडित अनुक्रमणिका खराब क्वेरी प्रदर्शन का कारण बन सकती है और दूषित हो सकती है। साथ ही, SQL सर्वर के संस्करण को अपग्रेड करने, SQL प्रोग्राम में बग, अचानक सिस्टम शटडाउन आदि जैसे कारक SQL सर्वर इंडेक्स भ्रष्टाचार को जन्म दे सकते हैं। विशेष रूप से, टेबल पर 'जटिल अद्यतन विवरण के साथ NOLOCK संकेत' चलाने से गैर-संकुल सूचकांक भ्रष्टाचार हो सकता है।

SQL सर्वर अनुक्रमणिका में भ्रष्टाचार को सुधारने के तरीकों पर चर्चा करने से पहले, आइए देखें कि दूषित अनुक्रमणिका की पहचान कैसे करें।

SQL सर्वर के इंडेक्स में भ्रष्टाचार की पहचान कैसे करें?

आप निम्न विधियों का उपयोग करके यह निर्धारित कर सकते हैं कि कोई अनुक्रमणिका दूषित है या नहीं:

  • भिन्न या हटाए गए मान वाली पंक्तियों को प्राप्त करें, और फिर किसी भी अनुपलब्ध प्रविष्टियों की पहचान करने के लिए 'ROWID' कमांड चलाएँ। आप SQL त्रुटि लॉग की जाँच करके भी अनुपलब्ध प्रविष्टियों का पता लगा सकते हैं।
  • यदि आपके पास एक दूषित गैर-संकुल अनुक्रमणिका है, तो DBCC CHECKDB चलाना निम्न त्रुटि संदेश की रिपोर्ट करेगा।

संदेश 2511, स्तर 16, राज्य 1, पंक्ति 31

तालिका त्रुटि:ऑब्जेक्ट आईडी 613577224, अनुक्रमणिका आईडी 2, विभाजन आईडी 72057594041401344,

आवंटित इकाई आईडी 72057594047037440 (इन-पंक्ति डेटा टाइप करें)।

पृष्ठ पर कुंजियाँ क्रम से बाहर हैं (1:264), स्लॉट 2 और 3।

  • यदि आपके पास एक संकुल अनुक्रमणिका है, तो आपको त्रुटि दिखाते हुए निम्न संदेश प्राप्त हो सकता है:

सर्वर:संदेश 1902, स्तर 16, राज्य 3, पंक्ति 1

टेबल 'टेबल नेम' पर एक से अधिक क्लस्टर इंडेक्स नहीं बना सकते। दूसरा बनाने से पहले मौजूदा क्लस्टर इंडेक्स 'क्लस्टर इंडेक्स नेम' को छोड़ दें।

SQL सर्वर अनुक्रमणिका भ्रष्टाचार को कैसे ठीक करें?

इन निःशुल्क विधियों का पालन करें जिनका उपयोग आप SQL सर्वर अनुक्रमणिका भ्रष्टाचार को सुधारने के लिए कर सकते हैं:

विधि 1 - बैकअप से पुनर्स्थापित करें

चाहे आपको क्लस्टर्ड या गैर-क्लस्टर इंडेक्स में भ्रष्टाचार का संदेह हो, भ्रष्टाचार होने से पहले प्रभावित डेटा को पुनर्स्थापित करने के लिए बैकअप का उपयोग करें।

हालाँकि, यदि बैकअप में नवीनतम अपडेट अनुपलब्ध हैं, तो बैकअप से पुनर्स्थापित करना काम नहीं करेगा। यहां तक ​​कि इससे डेटा लॉस भी हो सकता है। उस स्थिति में, अगली विधि आज़माएँ।

विधि 2 - दूषित अनुक्रमणिका को गिराएं और फिर से बनाएं

नोट: यह केवल गैर-संकुल अनुक्रमणिका के लिए कार्य करता है।

इन चरणों का पालन करके भ्रष्टाचार दिखाने वाले सभी या विशिष्ट अनुक्रमणिका को छोड़ें:

  • SQL सर्वर प्रबंधन स्टूडियो (SSMS) में सर्वर आवृत्ति से कनेक्ट करें
  • ‘ऑब्जेक्ट एक्सप्लोरर’ पर विंडो, उस डेटाबेस का विस्तार करें जिसमें दूषित अनुक्रमणिका वाली तालिका है।
  • तालिका पर राइट-क्लिक करें, ‘स्क्रिप्ट तालिका इस रूप में’ चुनें विकल्प, 'ड्रॉप एंड क्रिएट टू' . पर होवर करें और नया क्वेरी संपादक . पर क्लिक करें

यदि आप दूषित अनुक्रमणिका को पुन:बनाने में विफल रहते हैं, तो आप अनुक्रमणिका को सुधारने का प्रयास कर सकते हैं।

विधि 3 - SQL डेटाबेस को सुधारें

अंतिम उपाय के रूप में, डेटाबेस के लिए 'REPAIR_ALLOW_DATA_LOSS' के साथ DBCC CHECKDB कमांड चलाएँ, जो किसी टेबल पर दूषित (क्लस्टर या गैर-क्लस्टर) इंडेक्स है। लेकिन इसके परिणामस्वरूप डेटा हानि हो सकती है। वैकल्पिक समाधान के रूप में, MS SQL के लिए तारकीय मरम्मत जैसे SQL मरम्मत उपकरण का उपयोग करने का प्रयास करें। उपकरण डेटाबेस फ़ाइलों (.mdf और .ndf) को सुधारने में मदद करता है और अनुक्रमणिका, दृश्य, संग्रहीत कार्यविधियाँ और अन्य सभी घटकों को पुनर्स्थापित करता है। आप पुनर्स्थापित इंडेक्स और अन्य डेटाबेस ऑब्जेक्ट को सीधे एक लाइव या नए डेटाबेस में आयात कर सकते हैं।

सुधारी गई फ़ाइल को सहेजने से पहले पुनर्प्राप्त करने योग्य अनुक्रमणिका का पूर्वावलोकन करने के लिए SQL डेटाबेस मरम्मत सॉफ़्टवेयर का डेमो संस्करण डाउनलोड करें।

निष्कर्ष

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर:किसी क्वेरी के साथ कॉलम का डिफ़ॉल्ट मान ज्ञात करें

  2. कैसे बाधा के साथ कॉलम ड्रॉप करने के लिए?

  3. WHERE क्लॉज में कॉलम एलियास का जिक्र करते हुए

  4. SQL डेटाबेस पुनर्प्राप्ति लंबित पहुँच अस्वीकृत समस्या को ठीक करें

  5. SQL सर्वर डेटाबेस में अद्वितीय बाधा स्क्रिप्ट कैसे उत्पन्न करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 99