हम पहले ही कवर कर चुके हैं कि कमांड लाइन से SQL सर्वर डेटाबेस का बैकअप कैसे लें, तो क्या होगा यदि आप अपने सभी डेटाबेस को एक बार में बैकअप लेना चाहते हैं? आप एक बैच स्क्रिप्ट बना सकते हैं जो प्रत्येक डेटाबेस के लिए बैकअप कमांड चलाता है, लेकिन जब भी डेटाबेस जोड़ा जाता है या हटा दिया जाता है तो इस स्क्रिप्ट को अद्यतन करना होगा। इसके अतिरिक्त, डेटाबेस बैकअप सभी को एक फ़ाइल में जोड़ा जाएगा जो प्रत्येक बार चलने पर नए बैकअप के आकार से बढ़ेगा। इसके बजाए, सच में "इसे सेट करें और इसे भूल जाएं" फैशन में, हम एक बैच स्क्रिप्ट तैयार करेंगे जो आपके SQL सर्वर को अनुकूलित करेगा क्योंकि नए डेटाबेस जोड़े और हटाए गए हैं।
बिंदु पर जाने के लिए, यह बैकअप स्क्रिप्ट है:
@ECHO OFF SETLOCAL
REM Get date in format YYYY-MM-DD (assumes the locale is the United States) FOR /F “tokens=1,2,3,4 delims=/” %%A IN (‘Date /T’) DO SET NowDate=%%D-%%B-%%C
REM Build a list of databases to backup SET DBList=%SystemDrive%SQLDBList.txt SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)” > “%DBList%”
REM Backup each database, prepending the date to the filename FOR /F “tokens=*” %%I IN (%DBList%) DO ( ECHO Backing up database: %%I SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%%I] TO Disk=’D:Backup%NowDate%_%%I.bak'” ECHO. )
REM Clean up the temp file IF EXIST “%DBList%” DEL /F /Q “%DBList%”
ENDLOCAL
मान लीजिए कि दिनांक 1/13/2009 है और आपके पास 'माईडीबी', 'एडीडीबी' और 'डीबी नेम स्पेस' नामक 3 डेटाबेस हैं, लिपि निर्दिष्ट बैकअप स्थान में 3 फाइलें प्रस्तुत करेगी:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Spaces.bak के साथ नाम
- 2009-01-13_MyDB.bak
बैच स्क्रिप्ट को कस्टमाइज़ करना और चलाना
बेशक, आप स्क्रिप्ट को अपने पर्यावरण में कस्टमाइज़ करना चाहते हैं, इसलिए आपको यह करने की ज़रूरत है:
- यदि आपकी मशीन का लोकेल यूएस पर सेट नहीं है, तो 'दिनांक / टी' आदेश "मंगल 01/13/2009" प्रारूप में दिनांक वापस नहीं कर सकता है। यदि ऐसा है, तो NowDate चर वांछित प्रारूप का उत्पादन नहीं करेगा और समायोजित किया जाना चाहिए। (1 स्थान)
- 'MyServer' को अपने SQL सर्वर का नाम बदलने के लिए बदलें (लागू होने पर इंस्टेंस नाम जोड़ें)। (2 स्थान)
- 'मास्टर', 'मॉडल', 'msdb' और 'tempdb' नामक डेटाबेस डेटाबेस हैं जो SQL सर्वर के साथ शिप करते हैं। यदि आप नहीं चाहते हैं कि आप उनका बैक अप लेना चाहते हैं तो आप इस सूची में अतिरिक्त डेटाबेस नाम जोड़ सकते हैं। (1 स्थान)
- बैकअप स्थान को 'डी: बैकअप' से उस स्थान पर बदलें जहां आप डेटाबेस बैकअप फ़ाइलों को संग्रहीत करना चाहते हैं।
बैच स्क्रिप्ट को कस्टमाइज़ करने के बाद, इसे विंडोज टास्क शेड्यूलर के माध्यम से व्यवस्थापक अधिकारों वाले उपयोगकर्ता के रूप में चलाने के लिए शेड्यूल करें और आप सभी सेट हैं।