मुझे पूर्ण पुनर्प्राप्ति मॉडल का उपयोग कब करना चाहिए और मुझे डेटाबेस के लिए सरल पुनर्प्राप्ति मॉडल का उपयोग कब करना चाहिए?
जब आपको अपने डेटाबेस के पॉइंट-इन-टाइम पुनर्प्राप्ति की आवश्यकता होती है, तो आपको पूर्ण पुनर्प्राप्ति मॉडल का उपयोग करना चाहिए। जब आप अपने डेटाबेस के पॉइंट-इन-टाइम रिकवरी की आवश्यकता नहीं करते हैं, तो आपको सरल रिकवरी मॉडल का उपयोग करना चाहिए और जब रिकवरी पॉइंट के रूप में अंतिम पूर्ण या अंतर बैकअप पर्याप्त होता है। (नोट: एक और रिकवरी मॉडल है, थोक लॉग इन। बल्क-लॉग रिकवरी मॉडल के बारे में अधिक जानकारी के लिए यह संदर्भ देखें )
SQL सर्वर के लिए Microsoft OLE DB प्रदाता (0x80040E14) डेटाबेस 'DATABASE NAME' के लिए लेनदेन लॉग भरा हुआ है। यह जानने के लिए कि लॉग में स्थान का पुन: उपयोग क्यों नहीं किया जा सकता है, sys.dat डेटाबेस में log_reuse_wait_desc कॉलम देखें
आपके द्वारा उस त्रुटि (सबसे अधिक संभावना) का कारण यह है कि आप अपने लेन-देन लॉग का बैकअप नहीं ले रहे हैं। जब इसे बैकअप नहीं किया जाता है, तो यह लेन-देन लॉग फ़ाइल को भौतिक रूप से विकसित करना जारी रखेगा (बशर्ते ऑटोग्रॉथ सक्षम और अधिकतम अनुमति देता है) क्योंकि यह लेन-देन लॉग (वर्चुअल लॉग फ़ाइलों) के किसी भी "भाग" का पुन: उपयोग नहीं कर सकता है। यह केवल उन वीएलएफ को पुन: उपयोग के लिए चिह्नित कर सकता है और लेनदेन लॉग की "रैप-अराउंड" प्रकृति की अनुमति देता है जब आप लेनदेन लॉग बैकअप करते हैं (और कुछ अन्य आवश्यकताएं, जैसे कोई सक्रिय लेनदेन, कुछ प्रतिकृति पहलू आदि)।
लॉग को सिकोड़ने और डेटाबेस को फिर से एक्सेस करने योग्य बनाने के लिए, मैंने रिकवरी मॉडल को FULL से SIMPLE में बदल दिया और निम्न कमांड के साथ तार्किक फ़ाइल लॉग को सिकोड़ दिया।
......
इसने मदद की, लेकिन अब मुझे यह समझने की जरूरत है कि इसने मदद क्यों की, यह स्थिति कैसे शुरू हुई और भविष्य में इसे कैसे रोका जाए?
इसने आपकी मदद की क्योंकि आपके डेटाबेस को सरल रिकवरी मॉडल में सेट करके आपने SQL सर्वर को बताया कि अब आपको पॉइंट-इन-टाइम रिकवरी के बारे में परवाह नहीं है, और यह सुनिश्चित करने की आवश्यकता है कि वर्चुअल लॉग फ़ाइलों को अब संरक्षित और सक्रिय के रूप में चिह्नित करने की आवश्यकता नहीं है, अब एक चेकपॉइंट प्रक्रिया इन वीएलएफ को निष्क्रिय के रूप में चिह्नित करती है।
इस MSDN संदर्भ से लिया गया उद्धरण / उद्धरण :
सरल रिकवरी मॉडल के तहत, जब तक कि कुछ कारक लॉग ट्रंकेशन में देरी नहीं कर रहा है, एक स्वचालित चेकपॉइंट लेनदेन लॉग के अप्रयुक्त अनुभाग को काट देता है। इसके विपरीत, पूर्ण और थोक-लॉग रिकवरी मॉडल के तहत, एक बार एक लॉग बैकअप श्रृंखला स्थापित हो जाने के बाद, स्वचालित चौकियां लॉग ट्रंकेशन का कारण नहीं बनती हैं।
तब आपने एक भौतिक डेटाबेस फ़ाइल सिकुड़ कर किया था और क्योंकि आपके लेन-देन लॉग में खाली स्थान था अब यह NTFS फ़ाइल को शारीरिक रूप से सिकोड़ने में सक्षम था।
कुछ समय बिताने के लायक पढ़ना:
- रिकवरी मॉडल
- लेन-देन लॉग का प्रबंधन (जेल शॉ)
- ऐसे कारक जो विलंब को समाप्त कर सकते हैं
आपके संपादन के बाद EDIT :
क्या नया रिकवरी मॉडल और डेटाबेसिंक इस स्क्रिप्ट के साथ संघर्ष करने वाला है?
यह BACKUP DATABASE
कमांड रिकवरी मॉडल के साथ काम करेगा। के रूप में नियमित डेटाबेस के लिए हटना ... यह मत करो !!!! गंभीरता से, अपने डेटाबेस को तदनुसार आकार दें, और यदि आप पूर्ण पुनर्प्राप्ति मॉडल का उपयोग करते हैं, तो सुनिश्चित करें कि आप रूटीन और लगातार लेन-देन लॉग फ़ाइलों को कर रहे हैं, न केवल लेनदेन लॉग आकार को खाड़ी में रखने के लिए, बल्कि रिकवरी पॉइंट ऑब्जेक्ट्स को पूरा करने के लिए भी।
हम डेटाबेस के किसी भी अन्य प्रकार के बैकअप नहीं कर रहे हैं, और इसलिए लेन-देन लॉग नहीं है, हमें करना चाहिए?
यदि आपका डेटाबेस पूर्ण पुनर्प्राप्ति मॉडल का उपयोग कर रहा है, तो हाँ आपको लेनदेन लॉग बैकअप करना चाहिए। यदि आपका डेटाबेस सरल पुनर्प्राप्ति में है, तो आप भौतिक रूप से लेन-देन लॉग बैकअप नहीं कर सकते।
पुनर्प्राप्ति मॉडल का उपयोग करने के लिए (सरल बनाम पूर्ण) के रूप में, हम आपके लिए वह निर्णय नहीं कर सकते हैं। केवल आप, आपकी व्यवसाय टीम, और आपके SLAs कर सकते हैं।