Database
 sql >> डेटाबेस >  >> RDS >> Database

कमांड लाइन के साथ SQL डेटाबेस माइग्रेशन

क्या होगा यदि आपके पास दर्जनों SQL डेटाबेस हैं और प्रत्येक डेटाबेस को मैन्युअल रूप से बैकअप/पुनर्स्थापित करना आपके प्रोजेक्ट के लिए बहुत समय लेने वाला है? कोई बात नहीं! हम एक ऐसा तरीका तैयार कर सकते हैं जो बिना किसी मानवीय हस्तक्षेप के सभी डेटाबेस को एक साथ निर्यात और आयात करेगा। SQL लॉगिन और संग्रहीत कार्यविधियों और दृश्यों को स्थानांतरित करने में सहायता के लिए SSMS लेख के साथ हमारे MSSQL माइग्रेशन पर एक नज़र डालें।

स्रोत सर्वर पर डेटाबेस का बैकअप लेना

1. स्रोत सर्वर पर एसएसएमएस (माइक्रोसॉफ्ट एसक्यूएल सर्वर प्रबंधन स्टूडियो) खोलें, एसक्यूएल इंस्टेंस में लॉग इन करें और एक नई क्वेरी विंडो खोलें। निम्नलिखित क्वेरी चलाएँ:

SELECT name FROM master.sys.databases

यह कमांड आपके सर्वर पर सभी MSSQL डेटाबेस की सूची आउटपुट करेगा। इस सूची को कॉपी करने के लिए, परिणामों में कहीं भी क्लिक करें और सभी डेटाबेस का चयन करने के लिए कीबोर्ड शॉर्टकट CTRL+A (Mac उपयोगकर्ताओं के लिए Command + A) का उपयोग करें। सभी डेटाबेस को हाइलाइट करने के बाद राइट क्लिक करें और कॉपी चुनें।

2. नोटपैड खोलें, अपने परिणामों में पेस्ट करें और उन सभी डेटाबेस को हटा दें (नए कॉपी किए गए नोटपैड टेक्स्ट में) जिन्हें आप माइग्रेट नहीं करना चाहते हैं, साथ ही निम्नलिखित प्रविष्टियों को हटा रहे हैं:

  • मास्टर
  • tempdb
  • मॉडल
  • एमएसडीबी

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

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. इस परिणाम को कंप्यूटर पर C:\databases.txt . के रूप में सहेजें ।

4. एक नई नोटपैड विंडो बनाएं, दस्तावेज़ में निम्नलिखित को कॉपी/पेस्ट करें और इसे C:\db-backup.bat के रूप में सहेजें

mkdir %systemdrive%\dbbackups
for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%\dbbackups\%%a.bak' WITH STATS" )

5. अब जब आपने फ़ाइल को C:\db-backup.bat के रूप में सहेज लिया है, तो प्रारंभ पर नेविगेट करें मेनू और टाइप करें cmd ​​और कमांड प्रॉम्प्ट . पर राइट क्लिक करें व्यवस्थापक के रूप में चलाएँ . का चयन करने के लिए .निम्न कमांड टाइप करें:

cd C:\

और एंटर दबाएं। बाद में, db-backup.bat टाइप करें और एक बार फिर एंटर दबाएं।

इस बिंदु पर, आपके डेटाबेस ने निर्यात करना शुरू कर दिया है और आप प्रत्येक डेटाबेस निर्यात (नीचे चित्रित) की प्रतिशत प्रगति देखेंगे।

किसी भी विफल डेटाबेस पर ध्यान दें, क्योंकि जब आप बैच फ़ाइल को फिर से चला सकते हैं, तो केवल उन डेटाबेस का उपयोग करके जो विफल हो सकते हैं। यदि डेटाबेस बैकअप करने में विफल हो रहे हैं, तो कमांड प्रॉम्प्ट में प्रदर्शित त्रुटि संदेश पर ध्यान दें, मौजूदा C:\databases.txt फ़ाइल को संशोधित करके त्रुटि का समाधान करें ताकि केवल विफल डेटाबेस को शामिल किया जा सके और db-backup.bat को फिर से चलाया जा सके। जब तक सभी डेटाबेस सफलतापूर्वक निर्यात नहीं हो जाते।

डेटाबेस को गंतव्य सर्वर पर पुनर्स्थापित करना

अब तक आपके पास C:\dbbackups\ . फ़ोल्डर है जिसमें प्रत्येक डेटाबेस के लिए .bak फ़ाइलें हैं जिन्हें आप माइग्रेट करना चाहते हैं। आपको और . फ़ोल्डर को कॉपी करना होगा आपका C:\databases.txt गंतव्य सर्वर के लिए फ़ाइल। आपके डेटा को गंतव्य सर्वर पर ले जाने के कई तरीके हैं; आप यूएसबी, रोबोकॉपी या एफ़टीपी का उपयोग कर सकते हैं। गंतव्य सर्वर के C ड्राइव पर फ़ोल्डर को C:\dbbackups . कहा जाना चाहिए . फ़ाइल को सटीक रूप से नाम देना महत्वपूर्ण है क्योंकि हमारी स्क्रिप्ट यहां .bak फ़ाइलों की तलाश करेगी। सुनिश्चित करें कि गंतव्य सर्वर में आपकी C:\databases.txt फ़ाइल भी है, क्योंकि हमारी स्क्रिप्ट यहां डेटाबेस नामों की तलाश करेगी।

1. एक नोटपैड खोलें और दस्तावेज़ में निम्नलिखित को कॉपी/पेस्ट करें और इसे C:\db-restore.bat के रूप में सहेजें

for /F "tokens=*" %%a in (C:\databases.txt) do (
sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%\dbbackups\%%a.bak' WITH RECOVERY"
)

2. फ़ाइल को C:\db-restore . के रूप में सहेजें .बल्ले

3. स्टार्ट मेन्यू पर नेविगेट करें और cmd . टाइप करें .

4. कमांड प्रॉम्प्ट . पर राइट क्लिक करें और व्यवस्थापक के रूप में चलाएँ . चुनें . निम्न आदेश टाइप करें:

cd C:\

और एंटर दबाएं। अब टाइप करें db-restore.bat और एंटर दबाएं।

आपके डेटाबेस ने अब आयात करना शुरू कर दिया है। आप प्रत्येक डेटाबेस की बहाली का प्रतिशत और संदेश देखेंगे "डेटाबेस को सफलतापूर्वक संसाधित करें "प्रत्येक डेटाबेस के लिए जिसे सफलतापूर्वक संसाधित किया गया है।

किसी भी विफल डेटाबेस पर ध्यान दें, क्योंकि आप केवल विफल डेटाबेस का उपयोग करके बैच फ़ाइल को फिर से चला सकते हैं। यदि डेटाबेस बैकअप लेने में विफल हो रहे हैं, तो कमांड प्रॉम्प्ट में प्रदर्शित त्रुटि संदेश पर ध्यान दें, त्रुटि को संबोधित करें (आप आवश्यकतानुसार बैच फ़ाइल को बदल सकते हैं), केवल विफल डेटाबेस को शामिल करने के लिए C:\databases.txt को संशोधित करें और पुनः -रन db-restore.bat जब तक सभी डेटाबेस सफलतापूर्वक निर्यात नहीं हो जाते।

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL कमांड को कैसे वर्गीकृत किया जाता है | यूबीआईक्यू

  2. त्वरित फ़ाइल प्रारंभ:सेटअप के दौरान प्रभाव

  3. IRI कार्यक्षेत्र से दूरस्थ नौकरियां कैसे चलाएं

  4. SQL में एक विदेशी कुंजी के साथ एक टेबल कैसे बनाएं

  5. JPA के साथ दृढ़ता के लिए Java समर्थन को समझना