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

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

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

    बिंदु पर अधिकार पाने के लिए, यह बैकअप स्क्रिप्ट है:

    @ECHO रवाना
    SETLOCAL

    REM प्रारूप में दिनांक प्राप्त करें YYYY-MM-DD (मान लें कि स्थान संयुक्त राज्य है)
    For / F "tokens = 1,2,3,4 delims = /" %% A IN ('दिनांक / T') अभी सेट करें = %% D - %% B - %% C

    REM बैकअप के लिए डेटाबेस की एक सूची बनाएँ
    DBList =% SystemDrive% SQLDBList.txt सेट करें
    SqlCmd -E -S MyServer -h-1 -W -Q "सेट NoCount पर; Master.dbo.sysDat डेटाबेस से चयनित नाम जहां [नाम] नहीं है ('मास्टर', 'मॉडल', 'msdb', 'tempdb') ">"% DBList% "

    REM प्रत्येक डेटाबेस का बैकअप लें, फ़ाइल नाम के लिए तारीख पूर्व निर्धारित करें
    के लिए / एफ "टोकन = *"%% I IN (% DBList%) DO ()
    ECHO डेटाबेस का बैकअप लेना: %% I
    SqlCmd -E -S MyServer -Q "बैकअप डेटा [%% I] डिस्क पर =" D: बैकअप% NowDate% _ %% I.bak "
    ECHO.
    )

    REM अस्थायी फ़ाइल को साफ करें
    यदि एक्स्टिस्ट "% DBList%" DEL / F / Q "% DBList%"

    ENDLOCAL

    यह मानते हुए कि तिथि 1/13/2009 है और आपके पास 'MyDB', 'AnotherDB' और 'DB Name with Spaces' नामक 3 डेटाबेस हैं, स्क्रिप्ट निर्दिष्ट बैकअप स्थान में 3 फ़ाइलों का उत्पादन करेगी:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Spaces.bak के साथ नाम
    • 2009-01-13_MyDB.bak

    बैच स्क्रिप्ट को कस्टमाइज़ करना और चलाना

    बेशक, आप स्क्रिप्ट को अपने परिवेश में अनुकूलित करना चाहेंगे, इसलिए यहां आपको क्या करना है:

    • यदि आपकी मशीन का लोकल यूएस में सेट नहीं है, तो 'दिनांक / T' कमांड "दिनांक 01/13-2009" प्रारूप में नहीं लौट सकती है। यदि यह स्थिति है, तो NowDate चर वांछित प्रारूप का उत्पादन नहीं करेगा और इसे समायोजित किया जाना चाहिए। (1 स्थान)
    • अपने SQL सर्वर का नाम होने के लिए 'MyServer' को बदलें (यदि लागू हो तो उदाहरण का नाम जोड़ें)। (2 स्थान)
    • 'मास्टर', 'मॉडल', 'एमएसडीबी' और 'टेम्पर्डब' नाम के डेटाबेस ऐसे डेटाबेस हैं जो SQL सर्वर के साथ शिप होते हैं। आप इस सूची में अतिरिक्त डेटाबेस नाम जोड़ सकते हैं यदि आप नहीं चाहते कि वे बैकअप लें। (1 स्थान)
    • बैकअप स्थान को 'D: Backup' से उस स्थान पर बदलें जहाँ आप डेटाबेस बैकअप फ़ाइलों को संग्रहीत करना चाहते हैं.

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