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

तार्किक संगति-आधारित I/O त्रुटि का पता चला SQL सर्वर को ठीक करने के तरीके

सारांश: SQL डेटाबेस दुर्गमता समस्या डेटाबेस उपयोगकर्ताओं द्वारा सामना की जाने वाली सामान्य समस्या है। तो ब्लॉग से निपटने वाली यह समस्या SQL सर्वर डिटेक्टेड ए लॉजिकल कंसिस्टेंसी-बेस्ड I/O एरर पर चर्चा करेगी। हम इस त्रुटि के पीछे के कारण और इस समस्या से निपटने के सर्वोत्तम संभव तरीकों पर चर्चा करने जा रहे हैं। दुर्गम SQL डेटाबेस तक पहुँचने और पुनर्प्राप्त करने के लिए उपयोगकर्ता SQL सर्वर डेटाबेस टूल को पुनर्प्राप्त करने की मदद ले सकता है।

डेटाबेस तार्किक संगतता आधारित I/O त्रुटि के पीछे के कारण:

  • अचानक सिस्टम शटडाउन/क्रैश या बाधित शटडाउन
  • SQL व्यवस्थापक SQL डेटा को क्वेरी करने या बदलने का प्रयास करता है

उस बिंदु पर जब SQL सर्वर डेटाबेस तार्किक संगतता-आधारित त्रुटि का सामना करता है, प्रारंभिक चरण त्रुटि का पता लगाना है।

निम्नलिखित रणनीतियाँ त्रुटि का पता लगाने में मदद कर सकती हैं:

  • सर्वश्रेष्ठ अभ्यास विश्लेषक (बीपीए) उपकरण का उपयोग करें - बीपीए उपकरण बुनियादी स्थिरता त्रुटियों की पहचान करने में मदद करता है। यह टूल SQL-वेरिएंट के लिए स्पष्ट है, जिसका अर्थ है कि BPA 2008 SQL 2008, आदि के साथ एक्सेस किया जा सकता है।
  • इवेंट लॉग फ्रेमवर्क स्तर, ड्राइवर या डिस्क से संबंधित त्रुटियों पर विंडोज सिस्टम की जांच करें
  • chkdsk आदेश चलाकर फ़ाइल ढांचे के सम्मान की जाँच करें
  • ढांचे या डिस्क के लिए हार्डवेयर उत्पादकों द्वारा सुझाए गए निदान चलाएँ
  • SQL Server 2008 के लिए, SQLIOSim उपयोगिता को उस डेटाबेस के ड्राइव पर चलाएँ जिसने I/O त्रुटि की घोषणा की है।
  • हार्डवेयर विक्रेता या डिवाइस निर्माता से संपर्क करें ताकि यह जांचा जा सके कि हार्डवेयर पूर्वापेक्षाएँ SQL सर्वर की I/O आवश्यकताओं की पुष्टि करती हैं।

एसक्यूएल सर्वर से निपटने के मैन्युअल तरीके एक तार्किक संगति-आधारित I/O त्रुटि का पता लगाया

तकनीक 1 - हार्डवेयर और एप्लिकेशन नेटवर्क की जांच करें

डेटाबेस और SQL एप्लिकेशन के बीच एक उपयुक्त नेटवर्क बनाकर डेटाबेस अनियमितता त्रुटि को ठीक किया जा सकता है।

तकनीक 2 - SQL बैकअप से पुनर्स्थापित करें

SQL डेटाबेस सुधार के लिए बैकअप का उपयोग करने के लिए सबसे प्राप्य समाधान है। बैकअप से पुनर्स्थापित करने से पहले, सुनिश्चित करें कि:

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

चरण 1: SQL डेटाबेस को पूर्ण बैकअप से पुनर्स्थापित करने के लिए संलग्न क्रम का उपयोग करें

लेन-देन लॉग का बैकअप लें

बैकअप लॉग पेजलेवल को पुनर्स्थापित करता है

प्लेट ='g:PageLevelRestores_LOG1.bak'

INIT के साथ

जाओ

चरण 2: प्रगति को ऑनलाइन दिखाने के लिए पुनर्स्थापना परिवर्तन करें।

लॉग के टेल का बैकअप लें...

बैकअप लॉग पेजलेवल को पुनर्स्थापित करता है

मंडल ='g:PageLevelRestores_LOG_TAIL.bak'

INIT के साथ

जाओ

नोट:यदि भ्रष्टाचार एक पृष्ठ से जुड़ा हुआ है, तो पूर्ण SQL सर्वर डेटाबेस को पुनर्स्थापित करने के लिए कोई अनिवार्य कारण नहीं है। आप उस पृष्ठ के लिए सुलभ बैकअप से डेटाबेस को पुनर्स्थापित कर सकते हैं जो कमजोर है। साथ में दिए गए आदेशों को निष्पादित करने से एकांत पृष्ठ के लिए बैकअप को पुनर्स्थापित करने में मदद मिलेगी:

सही अनुरोध में सभी पहुंच योग्य लॉग बैकअप पुनर्स्थापित करें

लॉग पेजलेवल को यहां से पुनर्स्थापित करें

सर्कल ='g:PageLevelRestores_LOG1.bak'

NORECOVERY के साथ

जाओ

अंत में, टेल लॉग बैकअप को पुनर्स्थापित करें

लॉग पेजलेवल को यहां से पुनर्स्थापित करें

मंडल ='g:PageLevelRestores_LOG_TAIL.bak'

NORECOVERY के साथ

जाओ

अंत में, पुनर्स्थापना अनुक्रम के साथ काम पूरा करें

डेटाबेस पृष्ठ स्तर को पुनर्प्राप्ति के साथ पुनर्स्थापित करें

जाओ

जब डेटाबेस बैकअप ने SQL डेटाबेस को पुनर्स्थापित कर दिया है, तो यह देखने के लिए क्वेरी DBCC CHECKDB फिर से चलाएँ कि SQL डेटाबेस तार्किक संगतता-आधारित I/O त्रुटि के बिना चयन उद्घोषणा प्रबल होती है। यह आदेश यह भी देखता है कि इस तालिका में कोई डेटा हानि नहीं हुई है।

SQL डेटाबेस बैकअप की सीमाएं:

  1. सुलभ बैकअप पुराना होने पर SQL डेटाबेस बैकअप से पुनर्स्थापित करने की अपेक्षा करना बेमानी है।
  2. यदि तार्किक संगतता-आधारित I/O त्रुटि SQL सर्वर डेटाबेस में फैली हुई है, तो यह रणनीति वैध नहीं होगी।
  3. उन स्थितियों के लिए जहां एक गैर-संकुल अनुक्रमणिका में दोषपूर्ण पृष्ठ मौजूद है, SQL डेटाबेस की अनुक्रमणिका को गिराकर और फिर से बनाकर SQL डेटाबेस को ठीक किया जा सकता है।

तकनीक 3:REPAIR_ALLOW_DATA_LOSS से दूषित SQL डेटाबेस को सुधारें

विश्लेषण की गई त्रुटियों के लिए REPAIR_ALLOW_DATA_LOSS आधार निश्चित स्तर है।

नोट:REPAIR_ALLOW_DATA_LOSS का उपयोग करने से पहले, निम्नलिखित कार्य करें:

SQL सर्वर डेटाबेस का बैकअप लें और इसे दूसरे नाम से सेव करें

SQL डेटाबेस को सिंगल यूजर मोड में सेट करें

साथ में दिए गए आदेशों का उपयोग करके सभी टेबल्स रिकॉर्ड गिनती प्राप्त करें

उम्मीद @COUNT INT

प्रोक्लेम @SQL VARCHAR(2000)

तालिका बनाएं #T_Info(ID INT IDENTITY(1,1),T_Name VARCHAR(200),D_Count INT)

के लिए TINFO_CUR CURSOR घोषित करें

INFORMATION_SCHEMA.TABLES से TABLE_NAME चुनें

जहां TABLE_TYPE='आधार तालिका'

TINFO_CUR खोलें

TINFO_CUR से @T_Name में अगला प्राप्त करें

जबकि @@FETCH_STATUS =0

शुरू करें

सेट @SQL='INSERT INTO #T_Info(T_Name,D_Count) SELECT "'[email protected]_Name+"',COUNT(*) F from '[email protected]_Name+”

निष्पादित करें (@SQL)

TINFO_CUR से @T_Name में अगला प्राप्त करें

END

TINFO_CUR बंद करें

TINFO_CUR का आवंटन रद्द करें

चुनें * T_NAME के ​​#T_Info ऑर्डर से

साथ की प्रगति SQL डेटाबेस को ठीक करने और सुसंगत संगति-आधारित I/O त्रुटि को हल करने में मदद करती है:

कमांड चलाएँ:

DBCC CHECKDB (DB_NAME, REPAIR_ALLOW_DATA_LOSS)

SQL डेटाबेस के ठीक हो जाने के बाद, 'टेबल रिकॉर्ड काउंट' की प्रक्रिया को दोबारा दोहराएं और पुराने रिकॉर्ड काउंट के साथ कंट्रास्ट करें।

प्रारंभिक और अंतिम तालिका रिकॉर्ड गणना के बीच कोई अंतर नहीं होना चाहिए।

बाधाएं :

REPAIR_ALLOW_DATA_LOSS डेटाबेस तार्किक स्थिरता-आधारित IO त्रुटि को ठीक कर सकता है, फिर भी डेटा हानि का एक महत्वपूर्ण मुद्दा है, जहां एक कनेक्शन को मूल डेटा की हानि का सामना करना पड़ सकता है।

वैकल्पिक समाधान

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

निष्कर्ष

यह भी पढ़ें: कैसे जांचें कि SQL डेटाबेस दूषित है या नहीं 

इस पोस्ट में, हमने SQL सर्वर डिटेक्टेड ए लॉजिकल कंसिस्टेंसी-बेस्ड I/O एरर और इस समस्या को हल करने की तकनीकों का कारण बताया है।

त्रुटि को देखते हुए हमने सही तकनीक का पता लगाने का प्रयास किया है। यदि हार्डवेयर या फ्रेमवर्क त्रुटि के लिए उत्तरदायी है, तो यह हार्डवेयर से संबंधित मुद्दों को निर्धारित करने के लिए निर्धारित है, और यदि DBCC CHECKDB एकरूपता त्रुटि की रिपोर्ट करता है, तो उस बिंदु पर एक ताज़ा बैकअप का उपयोग करके SQL डेटाबेस को पुनर्स्थापित करने का प्रयास करें।

यदि हार्डवेयर और बैकअप के साथ समस्या ठीक नहीं होती है, तो उस समय डेटाबेस को REPAIR_ALLOW_DATA_LOSS की सहायता से ठीक करने का प्रयास करें। यह CHECKDB से सभी त्रुटियों को निर्धारित करने के लिए फिक्स की मूल डिग्री है, फिर भी इसका मतलब यह नहीं है कि यह वास्तव में त्रुटि को ठीक कर देगा। इसके अलावा, इससे डेटा हानि हो सकती है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlConnection.Close () स्टेटमेंट का उपयोग करके अंदर

  2. SQL सर्वर nvarchar स्ट्रिंग्स के अंदर खोज करते समय उच्च CPU का उपयोग करता है

  3. SQL सर्वर में DECODE () फ़ंक्शन

  4. डेटाबेस मेल प्रोफाइल (SSMS) के भीतर किसी खाते की प्राथमिकता बदलें

  5. SQL सर्वर (T-SQL) में वर्तमान सत्र की भाषा प्राप्त करने के 3 तरीके