क्या sql-server bak को पुनर्स्थापित करना और लॉग को उसी समय सिकोड़ना संभव है?


26

हमारे पास एक क्लाइंट से एक बेक फाइल है जिसे हमने समस्या की जांच के लिए अपने डेवलपर कार्यालयों में स्थानांतरित कर दिया है। बैकअप वर्तमान में 25GB है और पुनर्स्थापित डेटाबेस समान आकार के बारे में है, लेकिन इसे 100GB पुनर्स्थापित करने की आवश्यकता है। मेरा मानना ​​है कि यह इसलिए है क्योंकि वहाँ डेटाबेस 75GB लेनदेन लॉग आकार के लिए सेट है। डेटाबेस को पुनर्स्थापित करने के बाद हम लॉग फाइल को सिकोड़ सकते हैं लेकिन क्या रीस्टोर में ऐसा करने का कोई तरीका है?


3
जब तक मुझे पता है कि आप डेटाबेस को तब तक नहीं बदल सकते जब तक यह पुनर्स्थापना पूरा नहीं कर लेता।
शॉन मेल्टन

3
मैं उसी स्थिति में रहा हूं और मैं जवाब का इंतजार कर रहा हूं। बस टिप्पणी करने के लिए, एक उत्पाद है: लाल-गेट का एसक्यूएल वर्चुअल रिस्टोर। मैंने कभी भी इसका उपयोग नहीं किया है, लेकिन साइट के अनुसार: 'माउंटेड डेटाबेस को बैकअप फ़ाइल पर लगभग शून्य अतिरिक्त संग्रहण की आवश्यकता होती है।'
स्टेनलीजॉन्ह

जवाबों:


16

पुनर्स्थापना प्रक्रिया के एक भाग के रूप में बैकअप को सिकोड़ने का कोई तरीका नहीं है। बहाल डेटाबेस को बिल्कुल एकमात्र अपवाद के साथ स्रोत डेटाबेस की तरह दिखना चाहिए, ताकि आप ड्राइव अक्षर और फ़ोल्डरों को बदल सकें।


34

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

  1. एक संकुचित फ़ोल्डर बनाएँ D:\LogCompressed\
  2. संपीड़ित फ़ोल्डर के लिए एक प्रतीकात्मक लिंक बनाएं mklink /D /J D:\Log\ D:\LogCompressed\

  3. अपने डेटाबेस को ldf फ़ाइल के साथ इंगित करते हुए पुनर्स्थापित करें D:\Log\

  4. लॉग फ़ाइल को एक उपयुक्त आकार में सिकोड़ें

  5. डेटाबेस को अलग करें, लॉग फ़ाइल को एक असम्पीडित फ़ोल्डर में ले जाएं, संलग्न करें

यह गंदा है, यह धोखा है, इसे कभी भी लाइव न करें , लेकिन यह काम करता है। 32MB लॉग फ़ाइल के साथ एक नए बनाए गए डेटाबेस का त्वरित परीक्षण इसे डिस्क पर 330kb को कब्जे में लेने के रूप में दिखाता है, जब फ़ोल्डर को डिकम्प्रेस करता है और डिस्क का आकार 32MB पर वापस आ जाता है।


2
@ मर्क: यह हैक काम करता है, लेकिन सही नहीं है। यहां तक ​​कि अगर लॉग फ़ाइल अपने वास्तविक आकार से बहुत कम जगह लेती है, तो आप तब तक डेटाबेस को पुनर्स्थापित नहीं कर सकते जब तक कि डिस्क में वास्तव में डेटाबेस के वास्तविक आकार के बराबर खाली स्थान न हो। उपयोग करते समय, पुन: स्थापित करते समय, लॉग फ़ाइल का एक्टुरल आकार वास्तविक आकार से धीरे-धीरे नीचे जाता है, इसकी दर्दनाक। हालाँकि, यह अभी भी एक बहुत अच्छा हैक है। धन्यवाद।
chenwq

9

मेरा मानना ​​है कि आपके बैकअप का कारण 25 जीबी है और बहाल किया गया डेटाबेस 100 जीबी आपके लेन-देन लॉग के कारण नहीं है । मेरा अनुमान क्या है, आपकी डेटाबेस फ़ाइलों में 100 जीबी आवंटित स्थान है और डेटाबेस में 25 जीबी वास्तविक डेटा है।

आवंटित डेटाबेस फ़ाइल स्थान और उपयोग किए गए डेटा स्थान के बीच अंतर है । इस मामले में, पूर्व 100 जीबी है और बाद वाला 25 जीबी है।


1
ग्राहक अपने लेनदेन लॉग में 75GB आवंटित करता है। बहाल करने के बाद मैं वर्तमान में लॉग आवंटन को 1GB में बदल देता हूं। यदि संभव हो तो मैं इस डेटाबेस को उस सर्वर पर पुनर्स्थापित करना चाहूंगा जहां ड्राइव में 100GB से कम खाली स्थान है। किसी अन्य सर्वर को पुनर्स्थापित करने के बिना, फिर से चालू करें, बैकअप लें और फिर से पुनर्स्थापित करें।
एडम बटलर

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