हाल ही में, मुझे एक प्रोजेक्ट सौंपा गया था - हमारे ग्राहक ने एक नया SAN खरीदा, और वे चाहते थे कि हम पुराने को एक नए SAN से बदल दें। उपयोगकर्ता और सिस्टम डेटाबेस ने SAN का उपयोग किया, इस बीच, ऑपरेटिंग सिस्टम और SQL सर्वर के स्थानीय डिस्क पर स्थापित किए गए थे। हमारे लिए भाग्यशाली..!! विचार मौजूदा उपयोगकर्ता और सिस्टम डेटाबेस को एक नए SAN में ले जाना और डाउनटाइम को यथासंभव न्यूनतम रखना था। इसलिए, डाउनटाइम को कम करने के लिए, ओएस और एसक्यूएल को फिर से स्थापित करने के बजाय, हमने निम्नलिखित दृष्टिकोण का उपयोग करने का निर्णय लिया।
- मौजूदा सर्वर से एक नया SAN अटैच करें, उस पर नई ड्राइव बनाएं, और उन ड्राइव को मौजूदा फ़ेलओवर क्लस्टर इंस्टेंस में जोड़ें।
- एसक्यूएल सर्वर को रोकें, मास्टर, मॉडल और एमएसडीबी डेटाबेस को नई ड्राइव पर कॉपी करें और एसक्यूएल सेवाएं शुरू करें।
- उपयोगकर्ता डेटाबेस को नई ड्राइव पर ले जाएं और पुराने SAN को हटा दें।
अपने पिछले लेख में, मैंने मौजूदा फ़ेलओवर क्लस्टर में नया संग्रहण जोड़ने की चरण-दर-चरण प्रक्रिया के बारे में बताया था। इसके अलावा, मैंने उपयोगकर्ता डेटाबेस को नई ड्राइव पर ले जाने की प्रक्रिया का प्रदर्शन किया।
इस लेख में, मैं सिस्टम डेटाबेस को नई ड्राइव पर ले जाने की प्रक्रिया का प्रदर्शन करने जा रहा हूं जिसका मैंने अपने प्रोजेक्ट में उपयोग किया था। अपने पिछले लेख में, हमने ड्राइव को मौजूदा फेलओवर क्लस्टर में जोड़ा था और इस लेख में हम उसी ड्राइव का उपयोग करने जा रहे हैं। ड्राइव का वॉल्यूम लेबल “E:\ . है ”, इसलिए मैंने “SystemDatabases . नाम की एक निर्देशिका बनाई ” में ई:\ चलाना। निम्न चित्र देखें:
वर्तमान में, सिस्टम डेटाबेस "F:\MSSQL14.MSSQLSERVER\MSSQL\DATA पर हैं। " निर्देशिका। हम इन डेटाबेस को "E:\SystemDatabases . में ले जाना चाहते हैं " निर्देशिका। उपयोगकर्ता डेटाबेस के विपरीत, सिस्टम डेटाबेस को स्थानांतरित करना एक सरल प्रक्रिया नहीं है। हमें सही क्रम और चरणों का पालन करना चाहिए अन्यथा SQL इंस्टेंस प्रारंभ नहीं होगा।
सबसे पहले, सिस्टम डेटाबेस के वर्तमान स्थान की समीक्षा करते हैं। सिस्टम डेटाबेस का वर्तमान स्थान प्राप्त करने के लिए निम्न क्वेरी निष्पादित करें।
MASTERGOSELECT DB_NAME(DATABASE_ID) को [डेटाबेस नाम] के रूप में उपयोग करें, NAME AS [LOGICAL NAME], PHYSICAL_NAME AS [FILE PATH] SYS.MASTER_FILES जहां से 4DATABASE_IDनिम्न आउटपुट है:
डेटाबेसनाम तार्किक नाम फ़ाइल पथ----------------------- ----------------------------------- मास्टर मास्टर F:\MSSQL14.MSSQLSERVER\MSSQL\DAT\master. mdfmaster मास्टलॉग F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\mastlog.ldftempdb tempdev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf tempdb templog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldfmodel modeldev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\model.mdfmodel modellog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\modellog.ldfmsdb msdbdata F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdbdata.mdfmsdb msdblog F:\MSSQL14.MSSQLSERVER\ MSSQL\DATA\msdblog.ldfअब मैं डेटाबेस को दूसरी निर्देशिका में ले जाने की प्रक्रिया को निम्नलिखित तरीके से समझाऊंगा।
- एमएसडीबी और मॉडल डेटाबेस को स्थानांतरित करने के चरणों की व्याख्या करें।
- tempdb डेटाबेस को स्थानांतरित करने के चरणों की व्याख्या करें।
- मास्टर डेटाबेस को स्थानांतरित करने के चरणों की व्याख्या करें।
यह डेमो आपको दिखाएगा कि कैसे सभी सिस्टम डेटाबेस को E:\ . में स्थानांतरित किया जाए ड्राइव, इसलिए डाउनटाइम को कम करने के लिए, इसलिए मैं प्रक्रिया के अंत में SQL सेवाओं को पुनः आरंभ करूंगा।
msdb और मॉडल डेटाबेस को स्थानांतरित करने के चरण
Msdb और मॉडल डेटाबेस को स्थानांतरित करने के लिए, सबसे पहले, हमें ALTER डेटाबेस क्वेरी को निष्पादित करके सिस्टम कैटलॉग में फ़ाइल स्थानों को अपडेट करना होगा। ऐसा करने के लिए, PowerShell या SSMS में निम्न क्वेरी निष्पादित करें।
मास्टर का उपयोग करें; GO ALTER DATABASE मॉडल संशोधित फ़ाइल (NAME =MODELDEV, FILENAME = 'E:\SYSTEMDATABASES\MODEL.MDF'); GO ALTER DATABASE मॉडल संशोधित फ़ाइल (NAME =MODELLOG, FILENAME = 'E:\SYSTEMDATABASES\MODELLOG.LDF'); GO ALTER DATABASE MSDB संशोधित फ़ाइल (NAME =MSDBDATA, FILENAME = 'E:\SYSTEMDATABASES\MSDBDATA.MDF'); GO ALTER DATABASE MSDB संशोधित फ़ाइल (NAME =MSDBLOG, FILENAME = 'E:\SYSTEMDATABASES\MSDBLOG.LDF'); जाओआउटपुट इस प्रकार है:
फ़ाइल "MODELDEV" को सिस्टम कैटलॉग में संशोधित किया गया है। अगली बार डेटाबेस प्रारंभ होने पर नए पथ का उपयोग किया जाएगा। फ़ाइल "MODELLOG" को सिस्टम कैटलॉग में संशोधित किया गया है। अगली बार डेटाबेस शुरू होने पर नए पथ का उपयोग किया जाएगा। फ़ाइल "MSDBDATA" को सिस्टम कैटलॉग में संशोधित किया गया है। अगली बार डेटाबेस प्रारंभ होने पर नए पथ का उपयोग किया जाएगा। फ़ाइल "MSDBLOG" को सिस्टम कैटलॉग में संशोधित किया गया है। अगली बार डेटाबेस शुरू होने पर नए पथ का उपयोग किया जाएगा।सिस्टम कैटलॉग में पथ अद्यतन किए गए हैं यह सत्यापित करने के लिए अब निम्न क्वेरी निष्पादित करें। ऐसा करने के लिए, निम्न क्वेरी निष्पादित करें:
चुनें DB_NAME(DATABASE_ID)AS [DATABASE NAME], PHYSICAL_NAME के रूप में [फ़ाइल स्थान] SYS.MASTER_FILES DB_NAME(DATABASE_ID) IN ('MSDB', 'MODEL') जाओनिम्नलिखित आउटपुट है:
डेटाबेसनाम तार्किक नाम फ़ाइल पथ----------------------- ----------------------------------- मॉडल मॉडलदेव ई:\SystemDatabases\model.mdfmodel modellog E:\SystemDatabases \modellog.ldfmsdb msdbdata E:\SystemDatabases\msdbdata.mdfmsdb msdblog E:\SystemDatabases\msdblog.ldftempDB डेटाबेस को स्थानांतरित करने के चरण
जब हम SQL सर्वर को पुनरारंभ करते हैं - यह स्वचालित रूप से tempdb और लॉग फ़ाइलों को फिर से बना देगा इसलिए हमें tempdb फ़ाइलों को मैन्युअल रूप से स्थानांतरित करने की आवश्यकता नहीं है - हमें केवल डेटाबेस फ़ाइलों के पथ को बदलना है। Tempdb डेटाबेस फ़ाइलों के पथ को बदलने के लिए, PowerShell / SSMS में निम्न क्वेरी निष्पादित करें।
मास्टर का उपयोग करें; GO ALTER DATABASE TEMPDB संशोधित फ़ाइल (NAME =TEMPDEV, FILENAME = 'E:\SYSTEMDATABASES\TEMPDB.MDF'); GO ALTER DATABASE TEMPDB फ़ाइल को संशोधित करें (NAME =TEMPLOG, FILENAME = 'E:\SYSTEMDATABASES\TEMPLOG.LDF'); जाओआउटपुट इस प्रकार है:
फ़ाइल "tempdev" को सिस्टम कैटलॉग में संशोधित किया गया है। अगली बार डेटाबेस शुरू होने पर नए पथ का उपयोग किया जाएगा। फ़ाइल "टेम्पलॉग" को सिस्टम कैटलॉग में संशोधित किया गया है। अगली बार डेटाबेस शुरू होने पर नए पथ का उपयोग किया जाएगा।सिस्टम कैटलॉग में पथ अपडेट किए गए हैं यह सत्यापित करने के लिए अब निम्न क्वेरी निष्पादित करें:
चुनें DB_NAME(DATABASE_ID)AS [DATABASE NAME], PHYSICAL_NAME AS [FILE LOCATION] SYS.MASTER_FILES DB_NAME(DATABASE_ID) ='TEMPDB' GOनिम्नलिखित आउटपुट है:
डेटाबेसनाम तार्किक नाम फ़ाइल पथ----------------------- ----------------------------------- tempdb tempdev E:\SystemDatabases\tempdb.mdf tempdb templog E:\ सिस्टमडेटाबेस\templog.ldfमास्टर डेटाबेस को स्थानांतरित करने के चरण
मास्टर डेटाबेस को दूसरी ड्राइव पर ले जाने की प्रक्रिया अन्य सिस्टम डेटाबेस को स्थानांतरित करने से अलग है। सिस्टम डेटाबेस को स्थानांतरित करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- खोलें SQL सर्वर कॉन्फ़िगरेशन प्रबंधक 2017 और विस्तृत करें SQL सर्वर सेवाएं . पर क्लिक करें . निम्न छवि देखें:
- SQL सर्वर (MSSQLSERVER) पर राइट-क्लिक करें और गुणों पर क्लिक करें। गुण संवाद बॉक्स में, “स्टार्टअप पैरामीटर . चुनें "टैब। निम्न छवि देखें:
- जैसा कि आप ऊपर की छवि में देख सकते हैं, मौजूदा मापदंडों में टेक्स्ट बॉक्स में डेटा फ़ाइल, लॉग फ़ाइल और त्रुटि लॉग का डिफ़ॉल्ट स्थान होता है। यहां -d मास्टर डेटाबेस के डेटाफ़ाइल के डिफ़ॉल्ट पथ को इंगित करता है इसी तरह, -l मास्टर डेटाबेस की लॉग फ़ाइल का डिफ़ॉल्ट पथ इंगित करता है। हमें इन मापदंडों को एक नए स्थान से बदलना होगा। इसलिए डेटाफ़ाइल पैरामीटर पर क्लिक करें और इसे “– dE:\Systemdatabases\master.mdf से बदलें। "मूल्य और अद्यतन पर क्लिक करें। इसी तरह, लॉग फ़ाइल पैरामीटर पर क्लिक करें और इसे “-lE:\Systemdatabases\mastlog.ldf” से बदलें मान और अपडेट पर क्लिक करें। निम्न चित्र देखें:
4. डायलॉग बॉक्स बंद करने के लिए ओके पर क्लिक करें।
नोट:
चूंकि हम इस कार्य को SQL सर्वर फ़ेलओवर इंस्टेंस पर कर रहे हैं, इसलिए हमें उपरोक्त सभी परिवर्तन द्वितीयक नोड्स (SQL02.Dc.Local)
पर करने चाहिए।SQL सर्वर सेवाओं को पुनरारंभ करें।
SQL सर्वर कैटलॉग में msdb, मॉडल और tempdb का नया पथ अपडेट होने के बाद, हमें नई ड्राइव पर डेटाबेस फ़ाइलों की प्रतिलिपि बनाने के लिए सेवाओं को रोकना होगा। ऐसा करने के लिए, SQL सर्वर कॉन्फ़िगरेशन प्रबंधक 2017 खोलें>> सेवाओं पर क्लिक करें>> SQL सर्वर (MSSQLSERVER) पर राइट-क्लिक करें और "स्टॉप" पर क्लिक करें। निम्न चित्र देखें:
अब सभी सिस्टम डेटाबेस फाइलों को नई ड्राइव पर कॉपी करें। निम्न छवि देखें:
अब SQL सर्वर कॉन्फ़िगरेशन प्रबंधक से सेवा प्रारंभ करें। यदि सेवाएं सफलतापूर्वक शुरू हो गई हैं तो सिस्टम और डेटाबेस का पथ सफलतापूर्वक अपडेट कर दिया गया है। मास्टर डेटाबेस के पथ की समीक्षा करने के लिए निम्न क्वेरी निष्पादित करें:
चुनें DB_NAME(DATABASE_ID)AS [DATABASE NAME], PHYSICAL_NAME AS [फ़ाइल स्थान] SYS.MASTER_FILES DB_NAME(DATABASE_ID) ='मास्टर' जाओनिम्नलिखित आउटपुट है:
डेटाबेसनाम तार्किक नाम फ़ाइल पथ----------------------- ----------------------------------- मास्टर मास्टर E:\SystemDatabases\master.mdf मास्टर मास्टलॉग E:\ SystemDatabases\mastlog.ldfसारांश
इस लेख में, मैंने सिस्टम डेटाबेस को एक नई क्लस्टर डिस्क पर ले जाने की चरण दर चरण प्रक्रिया के बारे में बताया है।