Microsoft SQL सर्वर त्रुटि का निदान करना 9001: डेटाबेस के लिए लॉग उपलब्ध नहीं है


20

सप्ताहांत में एक वेबसाइट जिस पर मैंने काम करना बंद कर दिया है, इवेंट व्यूअर में निम्नलिखित त्रुटि दर्ज करते हुए हर बार वेबसाइट से अनुरोध किया जाता है:

इवेंट आईडी: 9001

डेटाबेस ' डेटाबेस नाम ' के लिए लॉग उपलब्ध नहीं है। संबंधित त्रुटि संदेशों के लिए ईवेंट लॉग की जाँच करें। किसी भी त्रुटि को हल करें और डेटाबेस को पुनरारंभ करें।

वेबसाइट एक समर्पित सर्वर पर होस्ट की जाती है, इसलिए मैं आरडीपी को सर्वर में सक्षम बनाता हूं और चारों ओर प्रहार करता हूं। LDFडेटाबेस के लिए फ़ाइल में मौजूद C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATAफ़ोल्डर, लेकिन एक ही त्रुटि की रिपोर्ट करने के लिए एक संवाद बॉक्स में से प्रबंधन स्टूडियो परिणाम डेटाबेस के साथ किसी भी काम करने के लिए प्रयास कर रहा - 9001: डेटाबेस के लिए लॉग उपलब्ध नहीं है ...

यह पहली बार है जब मुझे यह त्रुटि मिली है, और मैं इस साइट (और अन्य) को इस समर्पित वेब सर्वर पर दो वर्षों से होस्ट कर रहा हूं।

यह मेरी समझ है कि यह त्रुटि एक भ्रष्ट लॉग फ़ाइल को इंगित करती है। मैं डेटाबेस का पता लगाकर वेबसाइट को ऑनलाइन वापस लाने में सक्षम था और फिर कुछ दिनों पहले एक बैकअप बहाल कर रहा था, लेकिन मेरी चिंता यह है कि यह त्रुटि एक और अधिक भयावह समस्या का संकेत है, अर्थात् हार्ड ड्राइव विफलता।

मैंने वेब होस्टिंग कंपनी में समर्थन ईमेल किया और यह उनका जवाब था:

ईवेंट लॉग में कारण के कोई अन्य संकेत नहीं दिखाई देते हैं, इसलिए यह संभव है कि लॉग दूषित हो गया था। वर्तमान में मेमोरी के संसाधन 87% पर हैं, जिसका प्रभाव भी हो सकता है लेकिन संभावना नहीं है।

क्या लॉग "भ्रष्ट" हो सकता है?

मेरा प्रश्न: इस समस्या के निदान के लिए मुझे अगले कदम क्या चाहिए? मैं यह कैसे निर्धारित कर सकता हूं कि क्या यह वास्तव में एक हार्डवेयर समस्या है? और अगर यह है, तो क्या डिस्क की जगह लेने से परे कोई विकल्प हैं?

धन्यवाद

जवाबों:


16

अच्छी तरह से डेटाबेस में 99% से अधिक भ्रष्टाचार की समस्याएं स्टोरेज सिस्टम को करने के लिए हैं। शेष समस्याओं का आधा हिस्सा खराब मेमोरी के कारण है, अन्य आधे SQL सर्वर में कीड़े हैं।

बाधाओं यह एक भंडारण की समस्या है।

अगर ऐसा होता है तो डेटाबेस के खिलाफ फिर से DBCC CHECKDB चलाएं और इससे आपको भ्रष्टाचार के बारे में अधिक जानकारी मिलेगी, और यदि समस्या को ठीक किए बिना इसे ठीक किया जा सकता है। डेटाबेस के खिलाफ चेकडब चलाने के लिए आपको संभवतः डेटाबेस को आपातकालीन मोड में ऑनलाइन लाना होगा।

87% पर मेमोरी उपयोग की समस्या से कोई लेना देना नहीं है। SQL सर्वर सभी तरह से मेमोरी को 100% (या इसके करीब) डिज़ाइन द्वारा चलाएगा।


सुझाव के लिए धन्यवाद। मैंने वास्तव में DBCC CHECKDB करने की कोशिश की, लेकिन बहुत सारी त्रुटियां मिलीं, जिसमें एक त्रुटि भी शामिल है, जिसमें कहा गया है कि यह लॉग फ़ाइल नहीं ढूंढ सकी। लेकिन मैंने आपातकालीन मोड में DB को ऑनलाइन लाने की कोशिश नहीं की।
स्कॉट मिचेल

आमतौर पर अगर लेन-देन लॉग भ्रष्ट है यह एक बहुत बुरा काम है। CHECKDB यह सुधार करने में सक्षम हो सकता है, या यह नहीं हो सकता है, यह निर्भर करता है कि भ्रष्टाचार कितना बुरा है। यदि आपके पास लेन-देन लॉग बैकअप है (आपका प्रदाता इन्हें अनुमति नहीं दे सकता है) तो आप लगभग कोई डेटा नहीं खो सकते थे। चेकडब आउटपुट के अंत में मरम्मत स्तर होगा जो डेटाबेस फ़ाइलों के साथ समस्याओं को ठीक करने के लिए आवश्यक है।
मन्दिर

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

आप डिस्क के खिलाफ चेकडिस्क (chkdsk) चलाने की कोशिश कर सकते हैं कि विंडोज डिस्क के साथ कोई समस्या देखता है या नहीं। ऑड्स डिस्क को बदलने की आवश्यकता होगी। हालाँकि यह डिस्क नियंत्रक के कोड के भीतर या डिस्क के BIOS के भीतर कोड हो सकता है। या तो मामले में मैं डिस्क, और / या नियंत्रक की जगह लेना चाहूंगा।
mrdenny

8

मैं डेटाबेस को प्रबंधन स्टूडियो में ऑफ़लाइन ले जाकर इसे हल करने में सक्षम था, फिर तुरंत इसे ऑनलाइन वापस लाया। dbcc checkdbत्रुटियों को फेंक दिया था जो ऐसा करने के बाद हल हो गए थे। मैं यह नहीं कह सकते क्यों यह काम केवल यह है कि यह किया था काम।


5

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


1

MS SQL डेटाबेस दूषण से बचने के लिए एक प्रभावित डेटाबेस के लॉग को ऑफ़लाइन ले जाएगा। यही कारण है कि आपको 9001 त्रुटि मिलती है।

जब आप प्रभावित डेटाबेस को ऑफ़लाइन / ऑनलाइन MS SQL में ले जाते हैं, तो त्रुटि reoccur तक प्रभावित डेटाबेस लॉग को सक्षम करेगा।

इसे हल करने का दूसरा तरीका Auto_Close विकल्प को OFF में बदलना है

http://sqlmag.com/blog/worst-practice-allowing-autoclose-sql-server-databases


0

मैं अनुमान लगाने जा रहा हूं / आशा करता हूं कि आपको अपने एसक्यूएल सर्वर के लिए डिस्क पर जाने के लिए एक छापा मिला है। यदि आपको हार्डवेयर समस्याओं पर संदेह है, तो सबसे पहली बात यह है कि मैं आपके छापे रखरखाव / नैदानिक ​​उपकरण चलाऊंगा।

दूसरी बात (संभवत: समवर्ती रूप से यदि आप कर सकते हैं) डेटाबेस पर dbcc चेकडब चलाया जाता है (आपके सिस्टम डेटाबेस को भी नष्ट कर सकता है)।


0

ठीक है, पहला कदम, पूरी तरह से अलग ड्राइव पर अपने लॉग और अपनी mdf फ़ाइलों का बैकअप बनाएं। जल्दी से! (फाइल कॉपी)

इसके अलावा, एक पूर्ण डेटाबेस बैकअप करने का प्रयास करें।

इसके बाद, निम्नलिखित प्रयास करें। अपने वर्तमान डेटाबेस का उपयोग करके, इसे अलग करें, यदि आप लॉग फ़ाइल को हटा सकते हैं और फिर इसे डिस्क पर पूरी तरह से अलग स्थान पर ले जा सकते हैं। फिर डेटाबेस को फिर से संलग्न करें, और यह लॉग फ़ाइल के साथ gui में दिखाई देगा, लॉग फ़ाइल के लिए निकालें (या हटाएं) पर क्लिक करें ताकि यह दिखाई न दे, और फिर ठीक पर क्लिक करें। मूल रूप से इसे लॉग के बिना संलग्न करना, इसे डिफ़ॉल्ट स्थान में डेटाबेस के लिए लॉग फ़ाइल बनाने के लिए मजबूर करेगा।

मुझे बताएं।


0

हां, मुझे भी यही मुद्दा मिला, यह tempDb त्रुटि के बारे में था। हमने सेवाओं को फिर से शुरू किया और सब ठीक रहा।

इसके पीछे का मुद्दा SAN या स्टोरेज इश्यू था, जबकि I / O राइट ऑपरेशन, यह 15 से अधिक सेकंड के लिए लिखने में असमर्थ था।


0

कल, मुझे एक ही त्रुटि मिली थी "डेटाबेस के लिए लॉग '%' उपलब्ध नहीं है। घातक त्रुटि 9001, संदेश 21। कृपया अपने व्यवस्थापक से संपर्क करें" -

वर्कअराउंड- मैंने 'TempDB' की जाँच की, लेकिन यह सिस्टम डेटाबेस के बाकी हिस्सों की तरह सुलभ नहीं था। फिर मरम्मत के विकल्प के लिए जाने से पहले मैंने बस उस उदाहरण के लिए SQL सेवाओं को फिर से शुरू किया और समस्या हल हो गई :) :)


-2

मैंने यह देखा है जब लॉग विस्तार के लिए कोई डिस्क स्थान उपलब्ध नहीं है; क्या आप यह सत्यापित कर सकते हैं कि C: \ पर पर्याप्त स्थान था, और आपके लॉग प्रबंधित किए जा रहे हैं, अर्थात यदि आप पूर्ण पुनर्प्राप्ति मोड में हैं तो बैकअप प्राप्त कर रहे हैं।

यदि आपके पास विकल्प हो तो मैं आपके ldf (और mdf) को बूट वॉल्यूम से आगे बढ़ा दूंगा।


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

मैं rephrase..Maybe डेटाबेस का भ्रष्टाचार नहीं होगा, लेकिन निश्चित रूप से लॉग फ़ाइलों के लिए एक कारण के रूप में उपलब्ध नहीं कहा जा सकता है।
SqlACID

1
ड्राइव पर 25 जीबी से अधिक खाली स्थान है, और प्रश्न में डेटाबेस 25 एमबी आकार में है।
स्कॉट मिशेल

एकमात्र त्रुटि जो आपको कभी भी अंतरिक्ष से बाहर चलने से दिखाई देगी, डेटाबेस के भीतर पंक्तियों को संशोधित करने का प्रयास करते समय एक फ़ाइल पूर्ण त्रुटि है क्योंकि लेन-देन लॉग में नहीं लिखा जा सकता है (न कि ओपी ने कहा था)। अंतरिक्ष से बाहर जाने से डेटाबेस अनुपलब्ध नहीं होगा (ओपी ने जो कहा है)।
मन्दिर

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