मास्टर डेटाबेस भ्रष्ट है, उदाहरण शुरू नहीं होगा - मेरे विकल्प क्या हैं?


11

मदद! मेरा मास्टर डेटाबेस भ्रष्ट है, मैं SQL उदाहरण ऑनलाइन भी नहीं ला सकता! मेरे सर्वर को वापस लाने के लिए मेरे पास क्या विकल्प हैं?

मेरे पास मास्टर का बैकअप है, लेकिन MSDN पेज "रिस्टोरिंग द मास्टर डेटाबेस" मुझे एकल उपयोगकर्ता मोड में उदाहरण शुरू करने के लिए कहता है, जो मैं नहीं कर सकता!

(नोट: मैं इस प्रश्न को SQL संस्करण के रूप में अनिर्दिष्ट छोड़ रहा हूं, ताकि अधिक व्यापक रूप से लागू संदर्भ हो। DBA.SE पर कुछ समान प्रश्न हैं, लेकिन कोई भी ऐसा सर्वर नहीं है जो प्रारंभ करने में असमर्थ हो।)


(टिप्पणियाँ या अन्य उत्तर निश्चित रूप से स्वागत योग्य हैं, लेकिन मैंने इसे एक व्यापक उत्तर प्रदान करने के प्रयास में पूछा, जिसमें कुछ पहलुओं को मैं वेब पर अन्यत्र नहीं पा सकता हूं।)
ब्रैडेक

जवाबों:


12

यहाँ कुछ रास्ते हैं जिनकी मैं जाँच करूँगा। इन सभी को न करें (उनमें से कुछ एक ही उद्देश्य को पूरा करने के लिए अलग-अलग तकनीकें हैं), लेकिन विचार करने योग्य हैं:

1. SQL त्रुटि लॉग सीधे जांच करें

SQL त्रुटि लॉग वाले फ़ोल्डर में सीधे ब्राउज़ करें और ERRORLOGSQL उदाहरण प्रारंभ नहीं होगा पर अधिक विवरण प्राप्त करने के लिए सबसे हाल ही में नोटपैड में लोड करें । शायद आप पाएंगे कि समस्या मास्टर डेटाबेस के साथ बिल्कुल नहीं है।

2. एकल-उपयोगकर्ता मोड में उदाहरण शुरू करने का प्रयास करें

यहां (एकल उपयोगकर्ता मोड) और (न्यूनतम कॉन्फ़िगरेशन मोड) सहित SQL सर्वर के लिए स्टार्टअप विकल्पों की एक पूरी सूची है । अन्य विकल्प आपको मास्टर डेटाबेस के लिए पथ निर्दिष्ट करने की अनुमति देते हैं, यदि यह समस्या है।-m-f

यदि आप उदाहरण प्राप्त करने में सक्षम हैं, तो मास्टर डेटाबेस को पुनर्स्थापित करने के लिए आपके द्वारा लिंक किए गए MSDN लेख में दिए गए चरणों का पालन करें , या थॉमस ला रॉक द्वारा यह विस्तृत वॉकथ्रू

यदि कोई अन्य एप्लिकेशन आपके द्वारा किए जाने से पहले एकल उपयोगकर्ता कनेक्शन को हमेशा पकड़ लेता है, तो पहले SQL एजेंट को अक्षम करें ताकि यह शुरू न हो। दूसरा, आवेदन नाम निर्दिष्ट करने के लिए पैरामीटर का उपयोग करने के लिए इस प्रश्न पर विचार देखें-m"Application Name"

3. masterकिसी अन्य उदाहरण के लिए पुनर्स्थापित करें और इसकी फ़ाइलों की प्रतिलिपि बनाएँ

मुझे केवल इस अनिर्दिष्ट तकनीक का एक और उल्लेख मिला है , लेकिन मैंने इसे पिछले सप्ताहांत में सफलतापूर्वक उपयोग किया है, इसलिए यह एक कोशिश के लायक हो सकता है।

यदि आप एकल-उपयोगकर्ता मोड में इंस्टेंस को प्रारंभ नहीं कर सकते हैं, लेकिन आपके पास एक और SQL इंस्टेंस है जो सटीक रिलीज़ और बिल्ड को चला रहा है , तो अपने ज्ञात सर्वर से अंतिम ज्ञात अच्छे मास्टर डेटाबेस बैकअप को अन्य इंस्टेंस पर पुनर्स्थापित करने का प्रयास करें:

  • एक अलग नाम के रूप में पुनर्स्थापित करें, निश्चित रूप से ( master_please_god_let_this_work), WITH MOVEताकि आप masterअपने अच्छे सर्वर पर ओवरराइट न करें
  • पुनर्स्थापित करें WITH NORECOVERY। यह सुनिश्चित नहीं है कि यह आवश्यक है, लेकिन मुझे बेहतर महसूस हुआ कि मुझे पता था कि अन्य सर्वर बहाल मास्टर में कुछ भी बदलने नहीं जा रहा है
  • इसे ऑफ़लाइन पर सेट करें: ALTER DATABASE [master_please_god_let_this_work] SET OFFLINE
  • मृत सर्वर के लिए अच्छे सर्वर से बहाल एमडीएफ और एलडीएफ फाइलें कॉपी करें
  • नाम बदलें master.mdfऔर mastlog.ldfअपने बहाल संस्करणों के साथ बुरा मास्टर फ़ाइलों को प्रतिस्थापित करने के लिए आवश्यक के रूप में फाइल
  • अपनी उंगलियों को पार करें और उदाहरण शुरू करें
  • वैकल्पिक: पुनर्जीवित सर्वर पर मास्टर की एक नई पुनर्स्थापना करें। यह निश्चित नहीं है कि यह आवश्यक है, क्योंकि हम बहुत सावधान थे कि इसे बदलना नहीं है master

4. सिस्टम डेटाबेस का पुनर्निर्माण करें

यदि आपके पास समान संस्करण चलाने वाला कोई अन्य उदाहरण नहीं है, या यदि आप # 3 में सूचीबद्ध अनिर्दिष्ट प्रक्रिया का उपयोग करने में सहज नहीं हैं, या यदि आपके पास बैकअप नहीं है master( तो आपके पास बैकअप क्यों नहीं है? ); आप मूल स्थापित डिस्क से SQL सिस्टम डेटाबेस का पुनर्निर्माण कर सकते हैं :

Setup.exe /ACTION=REBUILDDATABASE /...

जब यह पूरा हो जाए, तो आप masterअपने पिछले अच्छे बैकअप से पुनर्स्थापित करने के लिए पहले से जुड़े चरणों का पालन कर सकते हैं । आपको msdbअपनी सभी नौकरियों, नौकरी अनुसूची और नौकरी के इतिहास को बनाए रखने के लिए हाल ही में बैकअप को पुनर्स्थापित करने की भी आवश्यकता होगी ।

5. सभी USER डेटाबेस को एक नए (या मौजूदा) SQL उदाहरण में पुनर्स्थापित करें

यदि आपको पहले से चल रहा एक और मौजूदा उदाहरण (उचित SQL संस्करण, पर्याप्त डिस्क स्थान) मिल गया है, तो मैं संभवतः सबसे हाल के बैकअप से डेटाबेस पुनर्स्थापना शुरू करूंगा, जबकि मैं अन्य समस्या निवारण चरणों पर काम कर रहा हूं, बस मुझे उनकी आवश्यकता है।

यदि आपके नए (या पुनः इंस्टॉल किए गए) इंस्टेंस में एक ही डिस्क का उपयोग होता है, तो उन्हें बस नए डेटाबेस के रूप में संलग्न करना बहुत तेज़ है:

CREATE DATABASE foo 
ON (FILENAME = 'D:\data\foo.mdf'),
   (FILENAME = 'D:\data\foo_log.ldf')
FOR ATTACH;

6. किसी भी परिवर्तन को फिर से करें master

एक बार जब आप सफलतापूर्वक master(उपरोक्त तकनीकों में से किसी के माध्यम से) पुनर्स्थापित करते हैं, तो आपको किसी भी परिवर्तन की जांच करने की आवश्यकता होती है जो खो गए होंगे, यदि वे बैकअप के बाद ही बनाए गए थे:

  • सुरक्षा में बदलाव
  • नए डेटाबेस (फाइलें अभी भी डिस्क पर होंगी, बस उन्हें संलग्न करें)
  • सर्वर-वाइड सेटिंग्स

इन्हें खोजने का कोई जादुई तरीका नहीं है, यदि आपके पास एक है, तो आपको इस प्रकार के परिवर्तनों के लिए अपनी खुद की कंपनी के दस्तावेज़ निशान पर वापस जाना होगा।


1
अच्छा लेख। +1। मैंने अपने मास्टर को भ्रष्ट करने के लिए एक परीक्षण किया, दूसरे सर्वर पर बैकअप बहाल किया, और फिर फ़ाइलों को पुराने सर्वर पर कॉपी किया। इसने बिना किसी समस्या के काम किया। वैसे, मुझे त्रुटि 3411 मिली, जबकि मास्टर भ्रष्ट था।
घुड़दौड़ का घोड़ा SQL

महान, उस तकनीक को सत्यापित करने के लिए धन्यवाद। मेरे मामले में, मुझे कभी भी वास्तविक त्रुटि नहीं मिली, लेकिन मेरे मास्टर डीबी को ठीक होने में घंटों लग गए, किसी भी संभव क्लस्टर सेवा टाइमआउट सेटिंग्स से परे।
ब्राडकास्ट

1
@ RafaelPiccinelli मास्टर सर्वर (सुरक्षा, अन्य डेटाबेस, आदि) पर सब कुछ के बारे में "मेटा-डेटा" रखता है, जिससे समझ में आता है। मेरे अंक # 5 और # 6 देखें। आपको उन डीबीएस को फिर से संलग्न करना होगा और आपके पास किसी भी सुरक्षा को फिर से स्थापित करना होगा। BTW, मुझे आशा है कि आप एक प्रयोगशाला वातावरण में यह सब कर रहे हैं !!
ब्रैड

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

2

मैं बस एक संभावित समस्या और समाधान जोड़ना चाहता था, जिसे मैं अभी भाग गया - मेरे पास एक असफल संचयी अद्यतन (SQL2016 CU12) और इवेंट व्यूअर में संदेश के दौरान एक समान स्थिति थी और जहां "मास्टर डेटाबेस को पुनर्प्राप्त नहीं किया जा सकता" कहकर गलत संदेश दिया। चलाने में असमर्थ। एक पूर्ण बैकअप से मास्टर को पुनर्स्थापित करें, इसकी मरम्मत करें, या इसे फिर से बनाएं। ", हालांकि मुझे अंततः पता चला कि अगर मैं सीयू निष्पादन योग्य फिर से चलाता हूं, तो इसने अपग्रेड स्टेटस को" अपूर्ण रूप से स्थापित "के रूप में पाया और मुझे बस चलाने की अनुमति दी फिर से अपडेट करें, जिसके बाद यह सफलतापूर्वक पूरा हो गया और मास्टर डेटाबेस और अन्य सभी बिना किसी समस्या के खुल गए।


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