मुखपृष्ठ » कैसे » बैच स्क्रिप्ट SQL सर्वर डेटाबेस रखरखाव सरल बनाने के लिए

    बैच स्क्रिप्ट SQL सर्वर डेटाबेस रखरखाव सरल बनाने के लिए

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

    एक डेटाबेस को संकुचित / सिकोड़ना [/ कॉम्पैक्ट]

    ऐसे कई कारक हैं जो SQL सर्वर डेटाबेस का उपयोग करते हुए भौतिक डिस्क स्थान में योगदान करते हैं। कुछ लोगों का नाम बताने के लिए:

    • समय के साथ-साथ रिकॉर्ड्स को जोड़ा जाता है, नष्ट किया जाता है और अद्यतन किया जाता है, एसक्यूएल लगातार बढ़ रहा है और तालिकाओं को सिकोड़ने के लिए अस्थायी डेटा संरचनाओं को बनाने के साथ-साथ तालिकाओं को सिकोड़ रहा है। डिस्क भंडारण जरूरतों को समायोजित करने के लिए, SQL सर्वर डेटाबेस के आकार (आमतौर पर 10%) की आवश्यकता के रूप में वृद्धि करेगा ताकि डेटाबेस फ़ाइल का आकार लगातार बदल नहीं रहा है। हालांकि यह प्रदर्शन के लिए आदर्श है, यह उपयोग किए गए संग्रहण स्थान के साथ डिस्कनेक्ट का कारण बन सकता है क्योंकि यदि, उदाहरण के लिए, आप बहुत बड़ी संख्या में रिकॉर्ड जोड़ते हैं, जिससे डेटाबेस बढ़ता है और बाद में इन रिकॉर्डों को हटा देता है, तो SQL सर्वर स्वचालित रूप से इसे पुनः प्राप्त नहीं करेगा। डिस्क में जगह.
    • यदि आप अपने डेटाबेस पर पूर्ण पुनर्प्राप्ति मोड का उपयोग कर रहे हैं, तो ट्रांसेक्शनल लॉग फ़ाइल (LDF) विशेष रूप से अद्यतनों की उच्च मात्रा के साथ डेटाबेस पर काफी बड़ी हो सकती है.

    डेटाबेस को संकुचित करना (या सिकोड़ना) अप्रयुक्त डिस्क स्थान को पुनः प्राप्त करेगा। छोटे डेटाबेस (200 एमबी या उससे कम) के लिए यह आमतौर पर बहुत अधिक नहीं होगा, लेकिन बड़े डेटाबेस (1 जीबी या अधिक) के लिए पुनः प्राप्त स्थान महत्वपूर्ण होगा.

    डेटाबेस रींडेक्सिंग [/ Reindex]

    बहुत कुछ लगातार बनाना, संपादन और फ़ाइलों को हटाने से डिस्क विखंडन हो सकता है, डेटाबेस में रिकॉर्ड डालने, अपडेट करने और हटाने से टेबल विखंडन हो सकता है। व्यावहारिक परिणाम उसी में होते हैं कि पढ़ने और लिखने के संचालन को एक प्रदर्शन हिट होता है। एक पूर्ण सादृश्य नहीं है, जबकि एक डेटाबेस में तालिकाओं को reindexing अनिवार्य रूप से उन्हें डीफ़्रैग्मेन्ट करता है। कुछ मामलों में, यह डेटा पुनर्प्राप्ति की गति को महत्वपूर्ण रूप से बढ़ा सकता है.

    SQL सर्वर के काम करने के तरीके के कारण, तालिकाओं को व्यक्तिगत रूप से फिर से जोड़ा जाना चाहिए। बड़ी संख्या में तालिकाओं वाले डेटाबेस के लिए यह मैन्युअल रूप से करने के लिए वास्तविक दर्द हो सकता है, लेकिन हमारी स्क्रिप्ट संबंधित डेटाबेस में प्रत्येक तालिका को हिट करती है और सभी अनुक्रमितों का पुनर्निर्माण करती है.

    सत्यनिष्ठता सत्यापित करना [/ सत्यापित करें]

    एक डेटाबेस के लिए दोनों कार्यात्मक रहने और सटीक परिणाम देने के लिए, कई अखंडता आइटम हैं जो जगह में होने चाहिए। शुक्र है, शारीरिक और / या तार्किक अखंडता समस्याएं बहुत आम नहीं हैं, लेकिन अपने डेटाबेस पर कभी-कभी अखंडता सत्यापन प्रक्रिया चलाने और परिणामों की समीक्षा करना अच्छा है।.

    जब हमारी स्क्रिप्ट के माध्यम से सत्यापन प्रक्रिया को चलाया जाता है तो केवल त्रुटियों की सूचना दी जाती है, इसलिए कोई भी खबर अच्छी खबर नहीं है.

    स्क्रिप्ट का उपयोग करना

    SQLMaint बैच स्क्रिप्ट SQL 2005 और उच्चतर के साथ संगत है और इसे ऐसी मशीन पर चलाया जाना चाहिए जिसमें SQLCMD टूल स्थापित हो (SQL सर्वर इंस्टॉलेशन के भाग के रूप में स्थापित)। यह अनुशंसा की जाती है कि आप इस स्क्रिप्ट को अपने Windows पथ चर (यानी C: Windows) में सेट किए गए स्थान में छोड़ दें, ताकि इसे आसानी से कमांड लाइन से किसी अन्य एप्लिकेशन की तरह कहा जा सके.

    सहायता जानकारी देखने के लिए, बस दर्ज करें:

    SQLMaint /?

    उदाहरण

    एक विश्वसनीय कनेक्शन का उपयोग करके "MyDB" डेटाबेस पर एक कॉम्पैक्ट और फिर एक सत्यापन चलाने के लिए:

    SQLMaint MyDB / कॉम्पैक्ट / सत्यापित करें

    नाम और उदाहरण के लिए "MyDB" पर एक रेनडेक्स और फिर कॉम्पैक्ट करने के लिए पासवर्ड "123456" के साथ "sa" उपयोगकर्ता का उपयोग करके "विशेष":

    SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact

    अंदर से एक बैच स्क्रिप्ट का उपयोग करना

    जबकि SQLMaint बैच स्क्रिप्ट कमांड लाइन से एक आवेदन की तरह इस्तेमाल किया जा सकता है, जब आप इसे किसी अन्य बैच स्क्रिप्ट के अंदर उपयोग कर रहे हैं, तो इसे CALL कीवर्ड से पहले होना चाहिए.

    उदाहरण के लिए, यह स्क्रिप्ट विश्वसनीय प्रमाणीकरण का उपयोग करते हुए डिफ़ॉल्ट SQL सर्वर इंस्टॉलेशन पर प्रत्येक गैर-सिस्टम डेटाबेस पर सभी रखरखाव कार्यों को चलाता है:

    @ECHO रवाना
    सेटलॉक सक्षम करें
    सेट DBList = "% TEMP% DBList.txt"
    SqlCmd -E -h-1 -w 300 -Q “सेट नॉटकाउंट ऑन; Master.dbo.sysDat डेटाबेस से सेलेक्ट नेम नॉट इन ('मास्टर', 'मॉडल', 'msdb', 'tempdb') ">% DBList%
    के लिए / एफ "उपयोगबैक टोकन = 1%% आई में (% DBList%) DO ()
    कॉल SQLMaint "%% i" / कॉम्पैक्ट / Reindex / सत्यापित करें
    ECHO +++++++++++
    )
    यदि EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    SysadminGeek.com से SQLMaint बैच स्क्रिप्ट डाउनलोड करें