जवाबों:
(मैं मूल रूप से एक नियमित प्रश्न के रूप में पूछा गया था, लेकिन फिर सही तरीका पता चला - धन्यवाद ब्रेंटो)
नहीं कभी नहीं।
मैं सर्वरफ़ॉल्ट पर अब कई बार आया हूँ और कुछ अच्छी सलाहों के साथ एक अच्छे व्यापक दर्शक तक पहुँचना चाहता हूँ। अगर लोग चीजों को करने के इस तरीके पर भड़क जाते हैं, तो मैं इसे ख़ुशी से निकाल दूंगा।
ऑटो-हटना सक्षम करने के लिए एक बहुत ही सामान्य डेटाबेस सेटिंग है। यह एक अच्छा विचार जैसा लगता है - डेटाबेस से अतिरिक्त स्थान को हटा दें। वहाँ 'अनैच्छिक DBAs' के बहुत सारे हैं (TFS, SharePoint, BizTalk, या बस नियमित रूप से पुराने SQL सर्वर के बारे में सोचते हैं) जो शायद नहीं जानते कि ऑटो-सिकुड़न सकारात्मक रूप से बुराई है।
Microsoft में मैंने SQL सर्वर स्टोरेज इंजन का इस्तेमाल किया था और ऑटो-सिक्योर फ़ीचर को हटाने की कोशिश की थी, लेकिन इसे बैकवर्ड संगतता के लिए रहना पड़ा।
ऑटो-सिकोड़ना इतना बुरा क्यों है?
डेटाबेस के फिर से बढ़ने की संभावना है, इसलिए इसे क्यों सिकोड़ें?
मैंने कुछ समय पहले एक ब्लॉग पोस्ट किया था जिसमें एक उदाहरण एसक्यूएल स्क्रिप्ट है जो इसके कारण होने वाली समस्याओं को दिखाता है और थोड़ा और विस्तार से बताता है। ऑटो-सिकोड़ें देखें - इसे बंद करें! (मेरे ब्लॉग पर ऐसा कोई विज्ञापन या कबाड़ नहीं)। लॉग फ़ाइल को सिकोड़ने के साथ इसे भ्रमित न करें, जो अवसर पर उपयोगी और आवश्यक है।
तो अपने आप को एक एहसान करो - अपने डेटाबेस सेटिंग्स में देखो और ऑटो-हटना बंद करें। ठीक उसी कारण से आपको अपने रखरखाव की योजनाओं में भी सिकुड़न नहीं होनी चाहिए। अपने सहकर्मियों को यह शब्द फैलाएं।
संपादित करें: मुझे इसे जोड़ना चाहिए, दूसरे उत्तर द्वारा याद दिलाया गया - आम गलतफहमी है कि एक सिकुड़ते ऑपरेशन को बाधित करने से भ्रष्टाचार हो सकता है। नहीं, यह नहीं होगा। मैं SQL सर्वर में सिकुड़न कोड का स्वामी हुआ करता था - यह वर्तमान पृष्ठ चाल को पीछे ले जाता है जो बाधित होने पर कर रहा है।
उम्मीद है की यह मदद करेगा!
बेशक, पॉल सही है।
सभी DBs और उनके ऑटोश्रंक सेटिंग देखें। यदि आपके पास बहुत सारे डेटाबेस हैं, तो एक अंदर घुस जाएगा।
sp_msforeachdb @command1 = 'Select ''[?]'',DATABASEPROPERTYEX(''?'',''IsAutoShrink'')'
क्या यह dmv के कहीं है .... मुझे आश्चर्य है।
यह "असुरक्षित" नहीं है - यह कुछ भी नुकसान नहीं पहुंचाएगा।
लेकिन यह उन उत्पादन वातावरणों के लिए अनुशंसित नहीं है जहां डेटाबेस बंद होने का अनुरोध कर सकता है और उन अनुरोधों को पूरा करने से पहले एक महंगे पुनर्व्यवस्थापन अभ्यास को शुरू करने का निर्णय ले सकता है। आप बैकअप (जैसे वास्तव में, बैकअप के बाद - यह इस तरह से लेन-देन लॉग से अधिक होगा) के रूप में अन्य रखरखाव के संचालन के साथ शेड्यूलिंग हटना संचालन का उपयोग करने से बहुत बेहतर है। या सिर्फ तब तक सिकुड़ता नहीं है जब तक कि कोई विकास समस्या न हो - आप हमेशा एक मॉनिटर सेटअप कर सकते हैं ताकि आपको पता चल सके कि अप्रयुक्त आवंटित स्थान एक निश्चित अनुपात या निश्चित आकार से परे बढ़ता है।
IIRC एक्सप्रेस को छोड़कर सभी MSSQL संस्करणों में सभी डेटाबेस के लिए डिफ़ॉल्ट रूप से विकल्प बंद है।
TechNet पर एक व्हाइटपेपर उपलब्ध है जो SQL रखरखाव को अधिक विस्तार से बताता है।
मैंने एक ऑटो सर्वर देखा है जिसमें ऑटोग्रो और ऑटोश्रंक दोनों सक्षम हैं। यह (अपेक्षाकृत शक्तिशाली) सर्वर बहुत धीमी गति से था, क्योंकि यह सब पूरे दिन करता था और डेटाबेस फ़ाइलों को छोटा करता था। ऑटोश्रेक उपयोगी हो सकता है, लेकिन मैं दो चीजों की सिफारिश करूंगा:
केवल एक बार जब मुझे डेटाबेस को सिकोड़ने के लिए मजबूर किया गया, तो कम डिस्क स्थान (उत्पादन डेटाबेस को रखने के लिए अपर्याप्त) के साथ एक परीक्षण सर्वर पर एक कॉपी को ताज़ा करना था।
उत्पादन डेटाबेस की फ़ाइल में उदार स्थान था, दुर्भाग्यवश आपको उसी फ़ाइल (आकारों) के साथ एक डेटाबेस को पुनर्स्थापित करना होगा जैसा कि आपने इसे बैकअप किया है। इसलिए इसे वापस करने से पहले उत्पादन को छोटा करने के अलावा कोई विकल्प नहीं था। (सिकुड़ा हुआ युग लिया गया, बहुत सारे संसाधनों का उपभोग किया गया और बाद में लेनदेन लॉग वृद्धि समस्याग्रस्त थी।)
इस वीडियो ट्यूटोरियल को भी देखें…।
देखो पॉल रान्डल प्रदर्शित करता है कि कैसे हटना और ऑटो-सिकोड़ना आपके डेटाबेस के लिए गंभीर विखंडन की समस्या पैदा कर सकता है http://wtv.watchtechvideos.com/topin194.html