छोटे mdf और ldf डेटाबेस फ़ाइलों के लिए bak फ़ाइल पुनर्स्थापित करें


11

मेरे पास एक विरासत डेटाबेस है जिसके बुरे डिजाइन की कमी मुझे यहाँ नहीं मिलेगी, लेकिन सर्वर पर फाइलें बहुत अधिक हैं (अपेक्षाकृत)। मेरे पास है:

MyDatabase.mdf: 24.8GB
MyDatabase.ldf: 114.6GB

यह डेटाबेस हर रात एक .bak फ़ाइल का बैकअप लेता है और हमारे रिपोर्टिंग सर्वर पर भेज दिया जाता है, जहां इसे बहाल किया जाता है। .Bak फ़ाइल केवल 1.8GB पर बहुत छोटी है।

हालाँकि, जब मैं रिपोर्टिंग सर्वर पर इसे पुनर्स्थापित करने का प्रयास करता हूं, तो यह अपर्याप्त स्थान के कारण विफल हो जाता है। सर्वर पर लगभग 100GB मुफ्त हैं, और यह संपूर्ण 139.4GB खाने की कोशिश कर रहा है जो मूल सर्वर पर खपत की गई फाइलें हैं। जब तक कि संपीड़न का मेरा ज्ञान भयानक रूप से गलत नहीं है, मुझे पूरा विश्वास है कि 1.8GB फ़ाइल वास्तव में 7400% तक नहीं बढ़ रही है।

मेरा प्रश्न: क्या उस बैकअप फ़ाइल को पुनर्स्थापित करने के लिए SQL सर्वर को बताने का कोई तरीका है जो उस स्थान को अपफ्रंट किए बिना बनाए? मुझे किसी भी लॉग की परवाह नहीं है; मुझे बस वहां रहने के लिए डेटा चाहिए। मैं डेटाबेस को विकास और स्कीमा के नजरिए से समझता हूं, लेकिन मैं किसी भी तरह से डीबीए के माध्यम से नहीं हूं।

यह SQL Server 2008 R2 पर है। किसी भी मदद या सुझाव के लिए धन्यवाद।

जवाबों:


11

बैकअप में दो जानकारी होती है:

  • डेटाबेस फ़ाइल लेआउट और मेटाडेटा, यानी। RESTORE FILELISTONLY ...
  • वास्तविक डेटा

बैकअप में वास्तविक डेटा उन 1.8 जीबी है। लेकिन मेटाडेटा मूल उत्पादन सर्वर पर फ़ाइलों के लेआउट का वर्णन करता है। जबकि यह संपीड़न जैसा दिखता है, वास्तविक संपीड़न नहीं है। सिर्फ मेटाडेटा बनाम सामग्री है। समस्या यह है कि पुनर्स्थापना के दौरान रिपोर्टिंग मशीन मेटाडेटा में वर्णित लेआउट बनाती है, इसलिए 114.6GB + 24.8GB। अब असली सवाल के लिए: क्या आप इसे पुनर्स्थापित कर सकते हैं w / o को मूल DB फ़ाइल लेआउट को फिर से बनाना? नहीं। हालांकि, आपकी समस्या का एक और समाधान है: मूल DB को वापस चेक में लाएं। लेन-देन लॉग को सिकोड़ना आपके द्वारा आवश्यक चरणों को कवर करता है, क्योंकि लॉग आपका प्रमुख दर्द बिंदु है। आगे मैं बैकअप / रिस्टोर के बजाय लॉग शिपिंग को तैनात करूंगा ।


धन्यवाद; लेन-देन लॉग को सिकोड़ने का काम पूरी तरह से किया।
eouw0o83hf

1
लॉग बैकअप के बदले में लॉग इन करें शिपिंग ??
थॉमस स्ट्रिंगर

4
@ शकर: रिपोर्टिंग मशीन को डीबी देने के लिए पूर्ण बैकअप के बजाय लॉग इन शिपिंग ।
रेमस रूसन

ओह ठीक है मैं पूरी तरह से सवाल का हिस्सा याद किया। स्पष्टीकरण के लिए धन्यवाद!!
थॉमस स्ट्रिंगर

0

SQL सर्वर 2012 डेटाबेस डेटाबेस फ़ाइल का उपयोग करने और SQL सर्वर से इसे संलग्न करने की अनुमति देता है: http://msdn.microsoft.com/en-us/library/ms174385.aspx । SQL सर्वर एक बिलकुल नई ldf फ़ाइल बनाता है जहाँ आप आकार निर्दिष्ट कर सकते हैं। फिर:

  • अपनी लॉग फ़ाइल को बढ़ने से रोकने के लिए साधारण पुनर्प्राप्ति मॉडल का उपयोग करें , या
  • पूर्ण पुनर्प्राप्ति मॉडल का उपयोग करें और नियमित रूप से लेन-देन लॉग बैकअप बनाएं। यह लॉग फ़ाइल को बढ़ने से भी रखेगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.