ऑपरेटिंग सिस्टम ने त्रुटि 21 दी (डिवाइस तैयार नहीं है।)


13

हर बार जब मैं विंडोज को रिबूट करता हूं, तो कुछ डेटाबेस के लिए मुझे यह त्रुटि मिलती है:

ऑपरेटिंग सिस्टम ने त्रुटि 21 दी (डिवाइस तैयार नहीं है।)

  1. मैंने डिस्क की जाँच की chkdsk /r- कोई बुरा क्षेत्र नहीं।
  2. मैंने DBCC CHECKDBबिना किसी त्रुटि के निष्पादित किया:

    *(CHECKDB found 0 allocation errors and 0 consistency errors in database)* 
  3. यदि मैं SQL सर्वर को पुनरारंभ करता हूं तो त्रुटियां गायब हो जाती हैं।

विंडोज 10 और एसक्यूएल सर्वर 2016 एक्सप्रेस।

जवाबों:


16

हर बार जब मैं विंडोज़ रिबूट करता हूं, तो कुछ डेटाबेस के लिए यह त्रुटि सामने आती है। (ओएस त्रुटि 21 - डिवाइस तैयार नहीं)

यह एक डिस्क ऑफ़लाइन होने या SQL सर्वर शुरू होने के समय ऑनलाइन नहीं होने के कारण है, या SQL सर्वर ऑनलाइन होने के बाद राज्यों को संक्रमित कर दिया था।

3. यदि मैं SQL सर्वर को पुनरारंभ करता हूं तो त्रुटियां गायब हो जाती हैं

हां, क्योंकि डेटाबेस को SQL सर्वर के अंदर रिमूव किया गया है। आप ऑफ़लाइन-> डेटाबेस को भी ऑनलाइन कर सकते हैं और यह काम करेगा, यह मानते हुए कि डिस्क डिवाइस को ठीक कर दिया गया है।

इसे डिस्क पर डेटाबेस लगाकर, डिस्क को निष्क्रिय करके, चयन क्वेरी (त्रुटि प्राप्त करने के लिए), डिस्क को ऑनलाइन वापस लाने और यह देखते हुए कि अभी भी उसी त्रुटि के साथ विफल रहता है, आसानी से परीक्षण परिवेश में पुन: प्रस्तुत किया जा सकता है। डेटाबेस को फिर से काम करने और ओएस एरर 21 प्राप्त न करने के लिए रिमाउंट करने की आवश्यकता होगी।

आपको क्या करना चाहिये?

क्या किसी को यह पता लगाने के लिए कुछ खिड़कियां हैं कि यह शुरू में ऑनलाइन क्यों नहीं आ रही है या यह ऑफ़लाइन (किसी भी राज्य संक्रमण) क्यों हो रही है या यह खिड़कियों के लिए तैयार क्यों दिख रहा है लेकिन वास्तव में ऐसा नहीं है (शायद अन्य ड्राइवरों को लोड करने की आवश्यकता है यह)।

इसके अतिरिक्त एंटी-वायरस, होस्ट इंट्रस्ट प्रोटेक्शन आदि जैसी चीजों के लिए कोई भी डिस्क फ़िल्टर ड्राइवर अप टू डेट हैं, क्योंकि वे सर्विस / स्टार्टअप / स्टेट को ब्लॉक भी कर सकते हैं।


मुझे एक समान समस्या थी और 5 मिनट के बाद SQLServer / SqlLaunchPad सेवाओं को फिर से शुरू करने के लिए एक स्क्रिप्ट जोड़ा, लेकिन यह काम नहीं करता है। जब मैं बाद में मैन्युअल रूप से पुनरारंभ करता हूं तो यह बिना मुद्दों के ठीक काम करता है। SQL Server2014 में समान कॉन्फ़िगरेशन समस्याओं के बिना काम करता है
राजेश

प्रारंभ मोड को स्वचालित से विलंब में बदलें। यह सुनिश्चित करेगा कि SQLService अंतिम (डिस्क माउंट के बाद और उनकी बात करते हैं) पर आता है।
जोनाथन फाइट

7

मुझे लगता है कि मुझे इसका कारण मिल गया है।

सबसे अधिक समस्या "फास्ट स्टार्टअप" बिजली विकल्पों के कारण है

तेज स्टार्टअप

यह बूट समय को कम करने के लिए एक विंडोज तकनीक है; फास्ट स्टार्टअप एक ठंडा शटडाउन और हाइबरनेट सुविधा के तत्वों को जोड़ता है ।

यहां आप पेशेवरों और विपक्षों के बारे में एक और लेख पा सकते हैं

मैंने इसे निष्क्रिय कर दिया है और समस्या हल होती दिख रही है।


महान। यह देखने का एक तरीका है। वास्तविक कारण यह है कि जब तक आप यह SQL त्रुटि नहीं देखते हैं, तब तक कुछ SQL सेवाएँ प्रारंभ नहीं होती हैं। उन्होंने शुरू नहीं किया है कि वे "स्टार्टअप" पर सेट कैसे हैं, खासकर यदि आप वास्तव में ओएस के लिए "फास्ट स्टार्टअप" का उपयोग कर रहे हैं।
छगबर्ट

3

ये मेरी टिप्पणियां हैं और मैंने इस समस्या को कैसे हल किया (दूसरों के लाभ के लिए जिनके पास समान समस्या हो सकती है)

  • मैं Sql सर्वर पर चलने वाले amazon ec2 उदाहरण का उपयोग कर रहा था।
  • मेरे पास E2 ब्लॉक डिवाइस था, जो ec2 उदाहरण से जुड़ा था, जो D: ड्राइव पर मैप किया गया था।
  • मेरा डेटा और लॉग डी: ड्राइव में थे।
  • जब मैं ec2 उदाहरण को रोक देता हूं और बाद में इसे ऊपर लाता हूं, तो मैंने हमेशा "डिवाइस तैयार नहीं होने" की त्रुटि का अनुभव किया और डेटाबेस नहीं आएगा।
  • मैंने "विलंबित स्टार्टअप" के साथ MSSQLSERVER सेवा स्थापित करने की कोशिश की।
  • हालाँकि, sql सर्वर लॉग से मैंने पाया कि देरी को सम्मानित नहीं किया गया था और MSSQLSERVER ने बूट के साथ ही शुरू किया।
  • इवेंटव्यूअर से मैंने उस समय का अवलोकन किया जिस पर D: ड्राइव स्वस्थ हो जाता है।
  • SQL सर्वर लॉग से, मैंने उस समय को नोट किया जिस समय SQL सर्वर मेरे उपयोगकर्ता डेटाबेस को शुरू कर रहा है।
  • मैंने देखा कि, D: ड्राइव केवल 6 सेकंड बाद उपलब्ध है; और स्पष्ट रूप से "डिवाइस तैयार नहीं है" त्रुटि दिखाई देती है।
  • मैंने यह भी नोट किया कि "विलंबित प्रारंभ" को सम्मानित नहीं किया गया था क्योंकि "SQL सर्वर लॉन्चपैड" नामक एक और सेवा थी जो "MSSQLSERVER" शुरू करती है।
  • मुझे "लॉन्चपैड" की Analytics क्षमता की आवश्यकता नहीं है। इसलिए मैंने उस सेवा को निष्क्रिय कर दिया।
  • अब "MSSQLSERVER" देरी से शुरू होता है और D: ड्राइव फ़ाइलों को ढूँढ सकता है।

1

MSSMS के माध्यम से अपने स्थानीय डिफ़ॉल्ट MS SQL उदाहरण (2017) से कनेक्ट करते समय मुझे मिली पूर्ण त्रुटि है:

ऑपरेटिंग सिस्टम ने त्रुटि 21 (डिवाइस तैयार नहीं है।) SQL सर्वर पर फ़ाइल 'D: \ MSSQL \ DATA \ tempdev.mdf' में ऑफसेट 0x000000000ae000 पर एक रीड के दौरान। SQL सर्वर त्रुटि लॉग और ऑपरेटिंग सिस्टम त्रुटि लॉग में अतिरिक्त संदेश अधिक विवरण प्रदान कर सकते हैं। यह एक गंभीर सिस्टम-स्तरीय त्रुटि स्थिति है जो डेटाबेस अखंडता को खतरा देती है और इसे तुरंत ठीक किया जाना चाहिए। एक पूर्ण डेटाबेस संगति जाँच (DBCC CHECKDB) को पूरा करें। यह त्रुटि कई कारकों के कारण हो सकती है; अधिक जानकारी के लिए, SQL सर्वर पुस्तकें ऑनलाइन देखें। (Microsoft SQL सर्वर, त्रुटि: 823) मदद के लिए, क्लिक करें: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID-823&LinkId=20476

एक बार जब मैंने अपने टेम्पर्डब को अपनी नई डी ड्राइव में स्थानांतरित किया तो मुझे यह मिलना शुरू हो गया। SQL सेवा का प्रारंभ / स्टॉप करना त्रुटि को दूर करता है। कभी भी यह त्रुटि नहीं हुई जब सब कुछ C. पर था। मेरी दोनों ड्राइव SSD हैं और Bitlocker के साथ एन्क्रिप्ट की गई हैं, सुनिश्चित नहीं हैं कि अगर यह समस्या हो सकती है, तो शायद C ड्राइव बहुत जल्दी अनलॉक हो जाती है क्योंकि ऑपरेटिंग सिस्टम को इसकी आवश्यकता होती है, और D ड्राइव बाद में अनलॉक हो जाती है ।

  1. मैक्स के उत्तर ( https://dba.stackexchange.com/a/175115 ) के अनुसार, "फास्ट स्टार्टअप" को अक्षम करने से उसकी समस्या ठीक हो गई। लेख के अनुसार मैक्स लिंक ( https://www.howtogeek.com/243901/the-pros-and-cons-of-windows-10s-fast-startup-mode/ ) इसे खोजने के लिए काफी अस्पष्ट है, " चुनें कि पावर बटन क्या करते हैं "और फिर" सेटिंग बदलें जो वर्तमान में अनुपलब्ध हैं "।
  2. वेनविग के उत्तर के विपरीत ( https://dba.stackexchange.com/a/226115 ), स्टार्टअप प्रकार = "स्वचालित (विलंबित प्रारंभ)" के लिए "SQL सर्वर" सेवा की स्थापना ने भी मेरी समस्या को ठीक कर दिया (Windows'Fastup re- के साथ सक्षम)।

0

मैं एक ही समस्या में कई बार आया हूं और सोचा है कि मुझे अपना समाधान साझा करना चाहिए (पहले से उपलब्ध उत्तरों के बावजूद):

इसलिए मेरे पास दो SQL इंस्टेंस (SQL 2008 और SQL 2017) हैं। त्रुटि मेरे SQL08 इंस्टेंस में लेकिन SQl17 पर प्रकट नहीं होती है। यह प्रत्येक SQL उदाहरण की स्थापना / सेटअप के दौरान प्रदान किए गए "खाता क्रेडेंशियल्स" के कारण होता है:

यहां छवि विवरण दर्ज करें

इसे विंडोज सर्विसेज के तहत देखा जा सकता है। SQL08 "स्थानीय सिस्टम खाता" का उपयोग करने के लिए सेट किया गया था, जबकि असफल SQL17 सेटअप के दौरान "NETWORK ACCOUNT" पर सेट किया गया था। तो बस इसे बदलें और यहां SQL सेवा को पुनरारंभ करें (या SQL ब्राउज़र में इंस्टेंस को पुनरारंभ करें)।

इस समस्या का दूसरा हिस्सा एसक्यूएल सर्वर 2017 CTP 2.0 के लिए अद्वितीय है का उपयोग करते समय एसक्यूएल सर्वर प्रबंधन स्टूडियो V17 जो मामले में एसएमओ "का उपयोग करने के लिए बंद कर sys.dm_os_enumerate_fixed_drives " के बजाय पुराने " xp_fixeddrives " अपने स्थानीय डिस्क की मुक्त स्थान जानकारी पाने के लिए । इसे हल करने के लिए, DEVICE MANAGER पर जाएं और उद्धृत ड्राइव को अस्थायी रूप से अक्षम करें (मेरे मामले में "G" था जो कि मेरा DVD-ROM ड्राइव है)।


0

इस समस्या ने मुझे भी परेशान कर दिया है। मैंने अपने SQL सर्वर इंस्टेंस पर 5 डीबीएस हुक किए हैं, जिनमें से 3 ठीक काम कर रहे हैं, लेकिन जिनमें से 2 शिकायत करते हैं

ऑपरेटिंग सिस्टम ने त्रुटि 21 (डिवाइस तैयार नहीं है।) SQL सर्वर से फ़ाइल 'E: \ xxxxxxxx.mdf' में ऑफसेट 0x00000000204000 पर पढ़ने के दौरान।

यहाँ मेरा समाधान है।

  1. Services.msc चालू करें , SQL सर्वर (उदाहरण नाम) नामक सेवा का पता लगाएं , राइट क्लिक करें और इसे पुनरारंभ करें ।
  2. Ssms पर वापस जाएं, अपने DB को रीफ्रेश करें, और चीजों को काम करना चाहिए।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.