Microsoft SQL सर्वर होस्ट करने वाली मशीन को सुरक्षित रूप से पुनरारंभ करने के लिए क्या कदम आवश्यक हैं?


24

क्या MS SQL सर्वर आवृत्ति होस्ट करने वाले सर्वर को पुनरारंभ करते समय डेटा भ्रष्टाचार को रोकने के लिए कोई विशेष कदम आवश्यक हैं?

उदाहरण के लिए, मैंने हाल ही में मैन्युअल रूप से SQL सेवा को रोकने की सिफारिश का सामना किया। मेरी समझ यह है कि यह विंडोज shutdownप्रक्रिया द्वारा नियंत्रित किया जाता है ।

मुझे यकीन है कि एक ज़िल्लिन चरण हैं जो कि व्यक्तिगत लोग सुझा सकते हैं, जैसे कि मैंने अभी उल्लेख किया है, लेकिन मैं अप्रचलित या अंधविश्वासी प्रथाओं को दोहराने से बचना चाहूंगा । क्या Microsoft, या व्यापक उद्योग मानकों से कोई सिफारिशें हैं?


यह प्रश्न मशीन को रिबूट करने की अल्पकालिक प्रक्रिया से संबंधित है। नहीं है एक और सवाल , यह सुनिश्चित स्थायी रूप से इसे नीचे लेने से पहले कि एक मशीन अप्रयुक्त है की लंबी अवधि के प्रक्रिया के बारे में।


मैं "व्यापक उद्योग मानकों" के लिए पूछने से कोई मतलब नहीं रख सकता और न ही "एक ऐसा कदम उठाना चाहूंगा जिसे व्यक्तिगत लोग सुझा सकें"। यह संभवतः उद्योग मानकों का उनका खाता है। ये दोनों मान्य प्रश्नों की तरह प्रतीत होते हैं, लेकिन आधिकारिक स्रोत Microsoft लेख का एक लिंक होने जा रहा है।
इवान कैरोल

जवाबों:


14

जब आप sql सर्वर को पुनरारंभ कर रहे हैं तो आपको फैंसी / चिंतित या डरने की ज़रूरत नहीं है।

बस यह सुनिश्चित करें कि आपके पास कोई लंबा चलने वाला लेनदेन नहीं है। कम / न्यूनतम गतिविधि अवधि के दौरान कंसोल या शटडाउन कमांड का उपयोग करके sql सर्वर को पुनरारंभ करना सबसे अच्छा है, जिसे आपके व्यवसाय पर प्रभाव को कम करने के लिए रखरखाव विंडो भी कहा जाता है।

यदि आपके पास कोई डीआर सेटअप है और आप नीचे नहीं जाना चाहते हैं, तो सबसे अच्छा है फेलओवर और फिर निष्क्रिय या माध्यमिक नोड को पुनरारंभ करें।

क्लीन शटडाउन SQL सर्वर नीचे के परिदृश्यों में होता है:

  • सेवाएँ कंसोल का उपयोग करके SQL सर्वर बंद करें।
  • अपना सर्वर बंद कर रहा है
  • SSMS में SHUTDOWN कमांड चलाना

उपरोक्त सभी स्थितियों में, sql सर्वर ने अपने सभी डेटाबेस को साफ़-साफ़ बंद कर दिया है और फिर उस सेवा को समाप्त कर दिया है जिसमें सभी लेन-देन को शुरू करना या वापस करना शामिल है, सभी गंदे पन्नों को डिस्क पर लिखना और फिर लेनदेन लॉग में प्रविष्टि लिखना।

SQL सर्वर का अनुचित शटडाउन:

  • अब के साथ बंद
  • अपने सर्वर से पावर केबल खींचना (यदि आपके पास पहुंच है)।
  • कार्य प्रबंधक से sqlserver.exe को मारना
  • जिस पर SQL सर्वर बायनेरिज़, exe, सिस्टम डेटाबेस रहते हैं या विंडोज सिस्टम ड्राइव विफलता .. पर विफलता। आमतौर पर C: \ ड्राइव।
  • सर्वर के ओवरहीट होने से यह बंद हो जाता है (शायद ही कभी होना चाहिए !!)

SQL सर्वर हमेशा एक साफ शटडाउन करने की कोशिश करेगा ... जब तक कि आप ऊपर बताए अनुसार कुछ अनुचित न करें ।

वसूली चरण के दौरान पर्दे के पीछे क्या होता है, इस पर कुछ वास्तव में अच्छा पढ़ने के लिंक:


महान विस्तार, धन्यवाद। "डीआर सेटअप" से आपका क्या मतलब है?
जॉन ऑफ ऑल ट्रेड्स

@JonofAllTrades डिजास्टर रिकवरी .. जैसे कि लॉग शिपिंग, डेटाबेस मिररिंग या आप क्लस्टरिंग जैसी उच्च उपलब्धता के बारे में भी सोच सकते हैं
परिजन शाह

1
जब तक मैं पूरी तरह से 'अनुचित' शटडाउन परिदृश्यों की इस सूची से सहमत हूं, डेटा भ्रष्टाचार तब भी नहीं होना चाहिए, लिखने के लिए धन्यवाद-आह लॉगिंग।
जॉन एलन

5

यह विस्तृत रूप से इस पृष्ठ पर है।

यह होने के नाते कि आपका प्रश्न विशेष रूप से पूछता है "क्या Microsoft द्वारा कोई सिफारिश की गई है " मैं यह सोचने के लिए इच्छुक हूं कि यह चर्चा यहां होने के लिए काउंटर-उत्पादक है। लेख उनके विवरण के माध्यम से प्रक्रिया

  • या तो उपयोग करना
    • कमांड लाइन
    • शक्ति कोशिका,
    • SQL सर्वर प्रबंधन स्टूडियो (GUI)
  • 2008, 2012, 2014, 2016 के लिए।
  • दोनों के लिए
    • डेटाबेस इंजन
    • या, एजेंट

चाहे वे कदम संतोषजनक हों या न हों, मेरी राय होगी, जो आप नहीं चाहते। तो सही जवाब हमेशा वहाँ पर सबसे अधिक होगा।

बिजली बंद करने से पहले सेवा को रोकना

SQL सेवाओं को चलाने वाले सर्वर को बंद करने से पहले ऐसा करना आवश्यक या अनुशंसित है।

नहीं यह जरूरी नहीं है। जब विंडोज कर्नेल एसक्यूएल सर्वर को बंद करने के लिए सिग्नल भेजता है, तो यह एक फैशन में ऐसा करेगा जो सुरक्षित है और सिस्टम इसके पूरा होने का इंतजार करेगा। आम तौर पर बोलते हुए, सुरक्षित रूप से बंद करने की क्षमता के साथ निर्मित कुछ भी मैन्युअल रूप से शटडाउन करने की आवश्यकता नहीं है, और इसका कारण यह है कि सभी Microsoft एप्लिकेशन अपने स्वयं के एपीआई और प्रक्रियाओं को PRESHUTDOWNया SHUTDOWNचरणों में बांधने का पालन करते हैं। डॉक्स से PRESHUTDOWN, जो मुझे लगता है कि वे उपयोग कर रहे हैं,

एक सेवा को सूचित करता है कि सिस्टम बंद हो जाएगा। सिस्टम शटडाउन पर तंग समय प्रतिबंध से परे सफाई कार्यों को करने के लिए अतिरिक्त समय की आवश्यकता वाली सेवाएं इस अधिसूचना का उपयोग कर सकती हैं। सेवा नियंत्रण प्रबंधक उन सूचनाओं को यह सूचना भेजता है SERVICE_CONTROL_SHUTDOWNजो उस अधिसूचना के लिए पंजीकृत आवेदनों को अधिसूचना भेजने से पहले इसके लिए पंजीकृत हैं।

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

जैसा कि आवश्यक हो सकता है, मुझे लगता है कि SQL सर्वर कैसे काम करता है।


ऐसा इसलिए है लगभग मैं क्या पूछ रहा था। वह दस्तावेज़ वर्णन करता है कि SQL सर्वर इंजन को कैसे बंद किया जाए, लेकिन यह जवाब नहीं देता कि SQL सेवाओं को चलाने वाले सर्वर को बंद करने से पहले ऐसा करना आवश्यक है या नहीं।
जॉन ऑफ ऑल ट्रेड्स

@JonofAllTrades फिर से अपडेट किया गया।
इवान कैरोल

3

बिल्कुल नहीं जब यह डीबी भ्रष्टाचार को बंद करने और रोकने की बात आती है। MS SQL सर्वर एक बहुत ही परिपक्व उत्पाद है और एक साधारण 'शटडाउन' द्वारा भ्रष्टाचार के मुद्दे को जन्म देने का कारण एक किनारे का परिदृश्य होगा। आपके द्वारा CHECK DB न चलाने या आपके DB पर सेट किए गए चेकसम सत्यापन की वजह से भ्रष्टाचार होने की बहुत अधिक संभावना है।

शायद एमडीएफ / एनडीएफ / एलडीएफ फाइलों को छूने वाले बाहरी उपकरण समस्या पैदा कर सकते हैं, जैसे कि शट डाउन के बीच फाइलों को 'मूव' करने की कोशिश करना या कुछ सॉफ्टवेयर बंद होने के दौरान फाइलों को लॉक करने की कोशिश करना। मैंने देखा है कि जब विंडोज़ डीबी फ़ाइलों की मेजबानी करता है, तो डिस्क पर विंडोज क्लस्टरिंग पेंच होता है, लेकिन विशेष रूप से 'डीबी भ्रष्टाचार' का कारण नहीं बनता है।

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

यदि किसी विशेषज्ञ के पास अन्य 'सर्वोत्तम प्रथाएँ' हैं, तो मैं उन्हें सुनना पसंद करूँगा, लेकिन पिछले कई वर्षों से ब्लॉग और ऑनलाइन संसाधनों को देखकर मुझे डेटा भ्रष्टाचार और एक साधारण 'शटडाउन / रीस्टार्ट' में ज्यादा कुछ नहीं दिखाई दिया।


-1

जिस तरह से मैं यह करता हूं: 1) सभी नौकरियों को अक्षम करें। 2) सुनिश्चित करें कि कोई भी कार्य वर्तमान में निष्पादित नहीं हो रहा है। 3) गतिविधि की जांच के लिए SP_Who3 को अक्सर चलाएं, अधिक जानकारी के लिए sp_whoisactive भी चलाएं। 4) यदि कोई गतिविधि नहीं है और केवल एक चीज जो आप देख रहे हैं, वह है आपकी वर्तमान sp_who3 क्वेरी 5) DBs ऑफ़लाइन 6 लें) डेटाबेस के शीर्ष पर राइट क्लिक करें और Stop 7 पर क्लिक करें) सत्यापित करें कि सेवाएँ services.ms 8 में रुकी हुई अवस्था में हैं ) किया हुआ

पुनश्च। क्या आपके पास PAGEIOLATCH / IOCOMPLETION होना चाहिए या SP_Who3 में कोई अन्य गतिविधि उपरोक्त नहीं करें क्योंकि यह आपके डेटाबेस को पुनर्प्राप्ति मोड में डाल सकता है।


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

यह एक अच्छी सलाह नहीं है। आप dbs को ऑफ़लाइन लेने का सुझाव क्यों देंगे - यदि dbs HADR में हैं जैसे दर्पण या एजी, तो आप ऐसा करने में सक्षम नहीं होंगे।
परिजन शाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.