SQL सर्वर एजेंट अलर्ट पर अपने पिछले लेख में, मैंने उच्च गंभीरता त्रुटियों 19-25 के साथ-साथ त्रुटि 825 के लिए SQL एजेंट अलर्ट को सेट और कॉन्फ़िगर करने के बारे में चरण-दर-चरण निर्देश प्रदान किए थे। इस लेख में, मैं जा रहा हूँ इन त्रुटियों पर विस्तार से चर्चा करें, और साझा करें कि यदि वे आपके वातावरण में होती हैं तो आपको क्या करना चाहिए।
19 या उससे अधिक के गंभीरता स्तर वाली त्रुटियां वर्तमान बैच को पूरा होने से रोकती हैं। 20 और उच्चतर की गंभीरता वाली त्रुटियां घातक त्रुटियां हैं और वर्तमान क्लाइंट कनेक्शन को समाप्त कर देती हैं। ये त्रुटियां डेटाबेस में सभी प्रक्रियाओं को भी प्रभावित कर सकती हैं। घातक त्रुटियां ठीक वही हैं जो नाम का तात्पर्य है:जो प्रक्रिया चल रही है उसे समाप्त कर दिया गया है और क्लाइंट कनेक्शन बंद कर दिया गया है।
गंभीरता 19 त्रुटियां
एक गंभीरता 19 त्रुटि संसाधन की कमी के कारण एक त्रुटि है। इसका मतलब है कि एक आंतरिक सीमा (जिसे आप कॉन्फ़िगर नहीं कर सकते) को पार कर गया है और वर्तमान बैच को समाप्त कर दिया है। ये त्रुटियां शायद ही कभी होती हैं और इस समस्या को ठीक करने के लिए आप बहुत कम कर सकते हैं। यदि गंभीर 19 त्रुटि होती है, तो आपको अपने प्राथमिक सहायता प्रदाता से संपर्क करना चाहिए; आमतौर पर, वह Microsoft होगा।
SQL सर्वर के साथ काम करने के अपने सभी वर्षों में, मुझे ऐसी कोई घटना याद नहीं आ रही है जहाँ एक गंभीरता 19 त्रुटि उत्पन्न हुई हो। बिंग की खोज में भी, मुझे त्रुटि की घटनाओं को खोजने में परेशानी हुई है; मुझे मिले कुछ संदर्भ SQL सर्वर के शुरुआती संस्करण से संबंधित थे, और SQL सर्वर के भीतर ही एक बग का संदर्भ दिया।
गंभीरता 20 त्रुटियां
गंभीरता 20 त्रुटि वर्तमान प्रक्रिया में एक घातक त्रुटि है। यह इंगित करता है कि एक बयान में एक समस्या का सामना करना पड़ा और उसे समाप्त कर दिया गया। चूंकि यह केवल वर्तमान प्रक्रिया को प्रभावित करता है, इसलिए यह बहुत कम संभावना है कि डेटाबेस स्वयं क्षतिग्रस्त हो गया हो। ये त्रुटियां एक व्यक्तिगत कथन से जुड़ी होती हैं, इसलिए आपको संपूर्ण त्रुटि संदेश एकत्र करना होगा और उस बिट कोड के लिए जिम्मेदार व्यक्ति या टीम तक पहुंचना होगा। यह इन-हाउस या संभवतः आवेदन का विक्रेता हो सकता है। एक उदाहरण त्रुटि है:
त्रुटि:18056, गंभीरता 20, राज्य:29क्लाइंट SPID 123 के साथ एक सत्र का पुन:उपयोग करने में असमर्थ था, जिसे कनेक्शन पूलिंग के लिए रीसेट कर दिया गया था।
इस त्रुटि के लिए मैं एप्लिकेशन डेवलपर या विक्रेता तक पहुंचूंगा, क्योंकि त्रुटि एक पूल किए गए कनेक्शन से संबंधित है जब रीसेट करने का प्रयास करते समय त्रुटि का सामना करना पड़ता है। मैं SQL सर्वर लॉग की भी समीक्षा करूंगा जिसमें त्रुटि के कारण वास्तव में क्या हो रहा है, इसके बारे में अधिक विस्तृत त्रुटि संदेश हो सकता है।
गंभीरता 21 त्रुटियां
गंभीरता 21 त्रुटि डेटाबेस में एक घातक त्रुटि है जो उस डेटाबेस का उपयोग करने वाली सभी प्रक्रियाओं को प्रभावित करती है।
मैंने देखा है कि यह त्रुटि तब होती है जब एक मानक संस्करण उदाहरण के लिए एंटरप्राइज़ सुविधाओं का उपयोग करके डेटाबेस को पुनर्स्थापित करने का प्रयास करते समय, साथ ही जब डेटाबेस दूषित होता है और उपयोगकर्ता दूषित पृष्ठ तक पहुंचने का प्रयास करता है। इस प्रकार का एक उदाहरण त्रुटि संदेश है:
त्रुटि:605, गंभीरता:21, राज्य 1डेटाबेस 'DB_NAME' में तार्किक पृष्ठ (1:8574233) लाने का प्रयास वस्तु '0' से संबंधित है, न कि 'तालिका01' पर आपत्ति करने के लिए।
एंटरप्राइज़ सुविधाओं का उपयोग मानक संस्करण इंस्टेंस में करने वाले डेटाबेस को पुनर्स्थापित करने का प्रयास करते समय, आपको पहले एंटरप्राइज़ सुविधाओं को निकालना होगा। उदाहरण के लिए, यदि आप डेटा संपीड़न का उपयोग कर रहे हैं या डेटा कैप्चर को बदलते हैं, तो आपको पहले डेटाबेस से उन सुविधाओं का उपयोग बंद करना और निकालना होगा, डेटाबेस का बैकअप लेना होगा, और फिर इसे मानक संस्करण इंस्टेंस में पुनर्स्थापित करना होगा। आप DMV sys.dm_db_persisted_sku_features
का उपयोग कर सकते हैं यह जाँचने के लिए कि क्या आपके पास केवल-एंटरप्राइज़ सुविधाएँ उपयोग में हैं।
भ्रष्टाचार त्रुटियों के लिए आपको DBCC CHECKDB
run चलाना होगा भ्रष्टाचार की सीमा निर्धारित करने और वहां से जाने के लिए। यदि आप भाग्यशाली हैं, तो त्रुटि एक गैर-संकुल अनुक्रमणिका में होगी जिसे आप पुन:बना सकते हैं और समस्या का समाधान कर सकते हैं। यदि भ्रष्टाचार अधिक गंभीर है, तो आप एक पुनर्स्थापना कार्रवाई देख सकते हैं। भ्रष्टाचार को बेहतर ढंग से समझने और भ्रष्टाचार के विभिन्न पहलुओं को कैसे हल किया जाए, इसके लिए मैं आपको पॉल रान्डल द्वारा विभिन्न ब्लॉग पोस्ट की समीक्षा करने के लिए प्रोत्साहित करता हूं। पॉल की भ्रष्टाचार पर एक पूरी श्रेणी है जिसे आप यहां देख सकते हैं:
- http://www.sqlskills.com/blogs/paul/category/corruption/
चल रहा है DBCC CHECKDB
भ्रष्टाचार का जल्द से जल्द पता लगाने के लिए आपके डेटाबेस के खिलाफ नियमित रूप से निर्धारित नौकरी के हिस्से के रूप में अत्यधिक अनुशंसा की जाती है। यदि आप नियमित रूप से भ्रष्टाचार की जांच नहीं कर रहे हैं, तो आप भ्रष्ट डेटा को पुनर्प्राप्त करने में सक्षम नहीं होने के एक बड़े जोखिम में हैं।
गंभीरता 22 त्रुटियां
तालिका अखंडता संदिग्ध होने के कारण गंभीरता 22 त्रुटि एक घातक त्रुटि है, मूल रूप से यह दर्शाता है कि संदेश में निर्दिष्ट तालिका या अनुक्रमणिका क्षतिग्रस्त है। भ्रष्टाचार होता है और अक्सर होता है। हमारा अनुभव है कि अधिकांश भ्रष्टाचार I/O सबसिस्टम से संबंधित समस्या के कारण होता है। यदि आप 22 त्रुटि की गंभीरता का सामना करते हैं, तो आपको DBCC CHECKDB
चलाने की आवश्यकता होगी क्षति की सीमा निर्धारित करने के लिए। एक उदाहरण त्रुटि है:
डेटाबेस में अमान्य फ़ाइल आईडी ## के लिए XYZ नहीं खोल सका। तालिका या डेटाबेस दूषित हो सकता है।
यदि त्रुटि एक गैर-अनुक्रमित अनुक्रमणिका में है, तो आप केवल अनुक्रमणिका का पुनर्निर्माण कर सकते हैं और भ्रष्टाचार को ठीक कर सकते हैं। यदि भ्रष्टाचार एक ढेर या संकुल सूचकांक में है, तो आपको डेटाबेस को एक सुसंगत स्थिति में पुनर्स्थापित करने की आवश्यकता होगी।
मैंने ऐसी रिपोर्टें देखी हैं जहां भ्रष्टाचार स्मृति में था लेकिन डिस्क पर नहीं था। उस स्थिति में इंस्टेंस को पुनरारंभ करना या डेटाबेस को ऑफ़लाइन सेट करना और फिर ऑनलाइन त्रुटि को साफ़ करना चाहिए।
गंभीरता 23 त्रुटियां
गंभीरता 23 त्रुटि एक अन्य घातक त्रुटि है जो रिपोर्ट करती है कि डेटाबेस में स्वयं एक अखंडता समस्या है। रिज़ॉल्यूशन बहुत हद तक 22 त्रुटि की गंभीरता जैसा है, जहाँ आपको तुरंत DBCC CHECKDB
चलाने की आवश्यकता होती है डेटाबेस को हुए नुकसान की पूरी सीमा का पता लगाने के लिए।
भ्रष्टाचार का यह स्तर संपूर्ण डेटाबेस को प्रभावित करने वाला पाया गया है। यह डेटा फ़ाइल में ही भ्रष्टाचार या लॉग फ़ाइल में भ्रष्टाचार हो सकता है। त्रुटि का विवरण आपको मूल समस्या की ओर निर्देशित करेगा। उदाहरण के लिए, निम्न त्रुटि इंगित करती है कि हमें अपने डेटाबेस को पुनर्स्थापित करने या लॉग के पुनर्निर्माण का प्रयास करने की आवश्यकता होगी। निरंतरता के लिए, मैं अपने सबसे हाल के बैकअप और सभी उपलब्ध लेनदेन लॉग बैकअप से पुनर्स्थापित करूंगा।
त्रुटि:9004, गंभीरता:23 राज्य:6डेटाबेस 'db_name' के लिए लॉग को संसाधित करते समय एक त्रुटि उत्पन्न हुई। यदि संभव हो तो बैकअप से पुनर्स्थापित करें। यदि कोई बैकअप उपलब्ध नहीं है, तो लॉग को फिर से बनाना आवश्यक हो सकता है।
गंभीरता 24 त्रुटियां
एक गंभीरता 24 त्रुटि एक हार्डवेयर से संबंधित एक घातक त्रुटि है। यह संदेश किसी प्रकार की मीडिया विफलता के कारण उत्पन्न होगा। इस प्रकार की सबसे आम त्रुटियाँ मैंने देखी हैं जो स्मृति और I/O त्रुटियों से संबंधित हैं। उदाहरण के लिए:
त्रुटि:832, गंभीरता:24, राज्य:1एक पृष्ठ जो स्थिर होना चाहिए था बदल गया है (अपेक्षित चेकसम:<अपेक्षित मूल्य>, वास्तविक चेकसम:<वास्तविक मान>, डेटाबेस
जब इस तरह की त्रुटियां होती हैं तो आपको अपने सर्वर पर मेमोरी टेस्ट चलाने के लिए अपने सिस्टम सपोर्ट टीम से संपर्क करना चाहिए और सर्वर को एक अच्छी स्वास्थ्य जांच देनी चाहिए। यह त्रुटि खराब मेमोरी या मेमोरी स्क्रिबलर (एक कर्नेल प्रक्रिया या ऐसा कुछ जो SQL सर्वर की मेमोरी को बदल रहा है) हो सकता है।
एक और उदाहरण:
त्रुटि:824, गंभीरता:24, स्थिति:2SQL सर्वर ने तार्किक संगति-आधारित I/O त्रुटि का पता लगाया:गलत पेजिड (अपेक्षित 1:123; वास्तविक 0:0)। यह डेटाबेस आईडी
यह त्रुटि डेटाबेस की प्राथमिक डेटा फ़ाइल में एक संगति त्रुटि को इंगित करती है। आपको तुरंत DBCC CHECKDB
चलाना होगा भ्रष्टाचार की सीमा निर्धारित करने और डेटाबेस को सुधारने या पुनर्स्थापित करने के लिए उचित कार्रवाई करने के लिए।
गंभीरता 25 त्रुटियां
एक गंभीरता 25 त्रुटि एक घातक सिस्टम त्रुटि है। मैंने सुना है कि गंभीरता 25 कमोबेश विविध घातक त्रुटियों के लिए एक पकड़ है। मैंने यह त्रुटि केवल तब देखी है जब असफल उन्नयन से संबंधित है:कुछ अपग्रेड स्क्रिप्ट में से एक को चलने से रोकता है, और एक गंभीरता 25 त्रुटि फेंक दी जाती है। आपको इस तरह की त्रुटि मिलेगी:
डेटाबेस 'मास्टर' के लिए स्क्रिप्ट स्तर अपग्रेड विफल रहा क्योंकि अपग्रेड चरण 'sqlagent90_sysdbupg.sql' में त्रुटि 598, स्थिति 1, गंभीरता 25 का सामना करना पड़ा। यह एक गंभीर त्रुटि स्थिति है जो नियमित संचालन में हस्तक्षेप कर सकती है और डेटाबेस को ऑफ़लाइन ले लिया जाएगा। यदि त्रुटि 'मास्टर' डेटाबेस के उन्नयन के दौरान हुई है, तो यह संपूर्ण SQL सर्वर आवृत्ति को प्रारंभ होने से रोकेगी। त्रुटियों के लिए पिछली त्रुटि लॉग प्रविष्टियों की जांच करें, उचित सुधारात्मक कार्रवाई करें और डेटाबेस को फिर से शुरू करें ताकि स्क्रिप्ट अपग्रेड चरण पूरा होने तक चले।इस मामले में, इस संदेश से पहले की त्रुटियों ने SQL सर्वर के लिए डिफ़ॉल्ट डेटा स्थान के लिए गलत पथ का संकेत दिया। एक बार इसे ठीक करने के बाद अपग्रेड सफलतापूर्वक चला।
त्रुटि 825
त्रुटि 825 को अक्सर पठन-पुन:प्रयास चेतावनी के रूप में संदर्भित किया जाता है, हालांकि स्थिति पढ़ने और लिखने दोनों के संचालन के लिए है। यह त्रुटि आपको यह बताती है कि ऑपरेशन के पुन:प्रयास की आवश्यकता थी और सफल होने से पहले SQL सर्वर को कितनी बार पुन:प्रयास करना पड़ा। SQL सर्वर चार बार तक के संचालन का पुन:प्रयास करेगा, चार पुन:प्रयास के बाद यह 823 या 824 त्रुटि उत्पन्न करेगा। त्रुटि 825 संदेश निम्न के समान होंगे:
ऑफ़सेट 0x00000002000 पर फ़ाइल 'नाम फ़ाइल करने का पथ\db_name.mdf' का एक पठन त्रुटि के साथ 2 बार विफल होने के बाद सफल हुआ:गलत चेकसम (अपेक्षित:XYZ; वास्तविक एबीसी)। SQL सर्वर त्रुटि लॉग और सिस्टम इवेंट लॉग में अतिरिक्त संदेश अधिक विवरण प्रदान कर सकते हैं। यह त्रुटि स्थिति डेटाबेस अखंडता के लिए खतरा है और इसे ठीक किया जाना चाहिए। एक पूर्ण डेटाबेस संगतता जाँच (DBCC CHECKDB) को पूरा करें। यह त्रुटि कई कारकों के कारण हो सकती है; अधिक जानकारी के लिए, SQL सर्वर पुस्तकें ऑनलाइन देखें।
ये संदेश महत्वपूर्ण हैं क्योंकि ये संकेत हैं कि आपको अपने डिस्क सबसिस्टम के साथ एक बड़ी समस्या है। समस्या निवारण के तरीके DBCC CHECKDB
चलाने के लिए होंगे यह सुनिश्चित करने के लिए कि डेटाबेस सुसंगत है, जैसा कि त्रुटि अनुशंसा करती है, साथ ही साथ ऑपरेटिंग सिस्टम या स्टोरेज डिवाइस से त्रुटियों के लिए विंडोज इवेंट लॉग की समीक्षा करें। त्रुटियों के लिए अंतर्निहित I/O सबसिस्टम की समीक्षा करने के लिए आपको अपनी स्टोरेज और हार्डवेयर सहायता टीम मिलनी चाहिए।
सारांश
SQL एजेंट अलर्ट कॉन्फ़िगर करना मुफ़्त और आसान है। आपके और आपके ग्राहकों के लिए डाउनटाइम को कम करने में मदद करने के लिए इन अलर्ट के प्रति सक्रिय और प्रतिक्रियाशील होना महत्वपूर्ण है। जैसा कि आप अब सीख चुके हैं, कई चीजें SQL सर्वर और आपके डेटाबेस की स्थिरता को प्रभावित कर सकती हैं, और इन त्रुटियों से उबरने में सक्षम होने के लिए सबसे अच्छा बचाव अच्छा बैकअप होना और DBCC CHECKDB
के लिए विभिन्न मरम्मत विकल्पों को जानना है।> . हमेशा DBCC CHECKDB
चलाने की सलाह दी जाती है जितनी जल्दी हो सके भ्रष्टाचार का पता लगाने के लिए अपने डेटाबेस के खिलाफ नियमित रूप से, जितनी जल्दी आप भ्रष्टाचार पाते हैं, उतनी ही अधिक संभावना है कि आपके पास डेटा का बैकअप हो ताकि आप बिना डेटा हानि के पुनर्स्थापित कर सकें।