आपका फ़ाइल प्रबंधन पूरी तरह से ऑनलाइन ऑपरेशन हो सकता है। आपके पास पुनर्प्राप्ति उद्देश्यों के लिए अपनी लॉग जानकारी को बनाए रखने की आवश्यकता के आधार पर दो रास्ते हैं:
समय पर रिकवरी की जरूरत नहीं है
- डेटाबेस को
SIMPLE
रिकवरी में बदलें । डिस्क पर लेनदेन लिखने के लिए एक चेकपॉइंट निष्पादित करें।
- लॉग को समतल करें।
- लॉग को उचित आकार में बदलें।
मैं एक निश्चित विकास राशि और असीमित वृद्धि (ताकि आपके लॉग को बेहतर ढंग से प्रबंधित करने में मदद करने के लिए) सेट करने की सलाह दूं। ध्यान दें, निश्चित विकास राशि बहुत अधिक है, यह राशि निर्भर करती है, मैं शुरू में 1-2 जीबी के साथ जाने की सलाह दूंगा जो इस बात पर निर्भर करता है कि लॉग देखने की कितनी वृद्धि हो सकती है। आदर्श रूप से, आपका लॉग अधिक विकसित नहीं होगा, इसलिए इसका बहुत अधिक प्रभाव नहीं होना चाहिए। यदि आपका लॉग नियमित रूप से बढ़ रहा है, तो आपको अपने आकार को फिर से देखना होगा।
का उपयोग कर पूरा:
ALTER DATABASE [foo]
SET RECOVERY SIMPLE;
CHECKPOINT;
DBCC SHRINKFILE (foo_log,0);
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
--Optional if you want the database in full recovery mode
--for point in time recovery going forward
ALTER DATABASE [foo]
SET RECOVERY FULL;
पॉइंट इन टाइम रिकवरी की जरूरत
सबसे बड़ा हैंगअप यह होगा कि आप अपनी लॉग फ़ाइल को अपने वर्तमान में सक्रिय वीएलएफ सेगमेंट से पहले नहीं हटा सकते हैं। इसे देखने के लिए, आप DBCC LOGINFO
डेटाबेस संदर्भ में उपयोग कर सकते हैं । स्थिति = 2 वाला कोई भी खंड सक्रिय है। सक्रिय सेगमेंट को साफ़ करने के लिए, आपको लेन-देन लॉग बैकअप चलाने की आवश्यकता होगी जब कोई लेनदेन वर्तमान में उस सेगमेंट में सक्रिय न हो। आपके कदम हैं:
- लेन-देन लॉग बैकअप चलाएँ।
- अपनी फ़ाइल को सिकोड़ें। (आदर्श रूप से चपटा, लेकिन अगर आपका डेटाबेस सक्रिय है तो ऐसा करना कठिन होगा)।
- चरण 1 और 2 को तब तक दोहराएं जब तक कि आपका लॉग एक उपयुक्त आकार न हो, आदर्श रूप में यथासंभव छोटा है।
- लॉग को उचित आकार में बदलें।
का उपयोग कर पूरा:
BACKUP LOG [foo] TO DISK='<Location of t-log backup>';
DBCC SHRINKFILE (foo_log,0);
--Repeat the above until your log file is small "enough"
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
यहाँ क्या हो रहा है यह समझने के लिए कुछ अतिरिक्त संसाधन: