SQL सर्वर 2008 के लिए एक पूर्ण रखरखाव योजना
डेटाबेस का अनुकूलन
यह खंड डेटाबेस को अनुकूलित रखने के लिए समर्पित है। इस उदाहरण में, हम निम्नलिखित करने के लिए कोड सेट करने जा रहे हैं (सर्वर कैसे जुड़े हैं इसका एक मोटा आरेख देखें);
- लाइव सर्वर से एक साझा बैकअप फ़ोल्डर में बैकअप डेटाबेस
- पुन: अनुक्रमणिका डेटाबेस
- सभी कनेक्शनों को समाप्त करें और रिपोर्टिंग सर्वर पर डेटाबेस को पुनर्स्थापित करें।
- लिंक्ड सर्वर जल्द ही एक अलग लेख में होंगे
- लॉग शिपिंग जल्द ही एक अलग लेख में होगी
इसे क्रॉस सर्वर करते समय, आपको उस खाते को अनुमति देने की आवश्यकता होगी जो SQL सर्वर लक्ष्य सर्वर फ़ाइल सिस्टम तक पहुंच से चल रहा है।
सभी SQL कोड एक उपयोगिता डेटाबेस से चलाए जाते हैं, और स्कीमा "रखरखाव" पर सेट होता है
नीचे हमने कई अन्य लेख लिखे हैं जो आपके लिए रुचिकर हो सकते हैं।
पूर्ण रखरखाव योजना
अब हम इन सभी अलग-अलग कोड खंडों को किसी अन्य प्रक्रिया के साथ प्रबंधित कर सकते हैं जो उन्हें सही क्रम में बुलाएगा, इसे लाइव सर्वर में डाल दिया जाएगा। कोड निम्नानुसार चलता है;
- समय निकालो
- यदि यह शाम है तो डेटाबेस को फिर से अनुक्रमित करें
- डेटाबेस का बैकअप चलाएँ (जहाँ आपको चाहिए वहाँ जोड़ें)
- यदि यह शाम है तो अन्य डेटाबेस का बैकअप लें (जहां आपको चाहिए वहां जोड़ें)
- कनेक्शन को मारें और डेटाबेस को पुनर्स्थापित करें (जहां आपको चाहिए वहां जोड़ें)
इस कोड का परीक्षण और परीक्षण किया गया है और बिना किसी समस्या के महीनों तक चला है।
कृपया ध्यान दें कि लॉग फ़ाइलों और डेटाबेस फ़ाइलों के सिकुड़ने को न्यूनतम रखा जाना चाहिए, बैकअप चलाकर आप लॉग को खाली कर रहे हैं (हालाँकि यह उपयोग किए गए स्थान को बनाए रखेगा)। यदि आवश्यक हो तो इसे सामान्य कामकाजी घंटों के बाहर कब चलाया जाना चाहिए।
SQL Code
Use [utilities]GOCREATE PROC [maint].MaintenancePlan AS BEGINDECLARE @BackupType VARCHAR(1)='E'IF DATEPART(HOUR,GETDATE()) BETWEEN 5 AND 21 BEGINSET @BackupType='D'END--EXEC ('USE TempDb; DBCC SHRINKFILE(templog, 0)');--This is only needed when space is at a premium!--Re-index LiveIF @BackupType='E' EXEC [maint].DatabaseReIndex 'dbname'--Create BackupBACKUP DATABASE TO DISK=N'{backuplocation}{dbname}.bak'WITH NOFORMAT, INIT, NAME =N'{dbname}', SKIP, NOREWIND, NOUNLOAD, STATS= 10;--EXEC ('USE ; DBCC SHRINKFILE(_log, 0)');--This is only needed when space is at a premium!--Backup Other Files at NightIF @BackupType='E' BEGIN EXEC [maint].DatabaseReIndex 'dbname' --Backup Others BACKUP DATABASE [databasename] TO DISK=N'{backuplocation}{dbname2}.bak' WITH FORMAT,INIT, NAME =N'{dbname2}',SKIP, NOREWIND, NOUNLOAD, STATS= 10END--Restore Backups on other serverEXEC [server].[utilities].[maint].KillConnections 'dbname';EXEC [server].[utilities].[maint].RestoreDatabase_{dbname};--Restore Backups on other server for db_2 etcIF @BackupType='E' BEGIN EXEC [server].[utilities].[maint].KillConnections 'dbname2'; EXEC [server].[utilities].[maint].RestoreDatabase_{dbname2};ENDENDGO
बैकअप डेटाबेस
अपने डेटाबेस का बैकअप लेने के लिए कोड प्राप्त करने के लिए, SSMS से कोड को स्क्रिप्ट करना सबसे आसान है।
उस प्रक्रिया का पालन करें जिसका आप सामान्य रूप से उपयोग करेंगे, और फिर "स्क्रिप्ट एक्शन टू न्यू क्वेरी विंडो" चुनें।
इस कोड को रखरखाव योजना में कॉपी करें।
पुन: अनुक्रमणिका डेटाबेस
इसके बाद हम अपने डेटाबेस को फिर से अनुक्रमित करने के लिए कुछ कोड जोड़ सकते हैं, यह फिर से एक शेयर संग्रहीत प्रक्रिया है जहां आपको केवल सिस्टम को नाम बताने की आवश्यकता होती है।
कोड दोहराव से बचने के लिए, आप इसके बारे में नीचे दिए गए लिंक पर पढ़ सकते हैं।
कनेक्शन को मारें
डेटाबेस पर पुनर्स्थापना करते समय, आपके पास केवल एक कनेक्शन हो सकता है (पुनर्स्थापित करने की प्रक्रिया), इसलिए हम वर्तमान प्रक्रिया के अलावा सभी कनेक्शनों को बंद करने के लिए एक संग्रहीत कार्यविधि बना सकते हैं। इसके लिए हमने फिर से एक अलग आर्टिकल बनाया है।
डेटाबेस पुनर्स्थापित करें
यह कोड SQL सर्वर प्रबंधन स्टूडियो से भी स्क्रिप्ट किया जा सकता है। यदि आप इस कोड को किसी संग्रहीत कार्यविधि में जोड़ते हैं, तो आप इसे अन्य प्रक्रियाओं और यहां तक कि अन्य सर्वरों से भी आसानी से कॉल कर सकते हैं। हमने अधिक विकल्पों को शामिल करने के लिए इसे एक अलग लेख में स्थानांतरित कर दिया है।