Pagrindinis » kaip » Partijos scenarijus „Backup“ visiems „SQL Server“ duomenų bazėms

    Partijos scenarijus „Backup“ visiems „SQL Server“ duomenų bazėms

    Jau aptarėme, kaip nukopijuoti SQL Server duomenų bazę iš komandinės eilutės, taigi, jei norite iš karto kopijuoti visas savo duomenų bazes? Galite sukurti paketinį scenarijų, kuris atlieka atsarginę komandą kiekvienai duomenų bazei, tačiau šis scenarijus turėtų būti atnaujinamas kiekvieną kartą, kai pridedama arba pašalinama duomenų bazė. Be to, duomenų bazės atsarginės kopijos bus pridėtos prie vieno failo, kuris kiekvieną kartą, kai bus paleistas, padidės pagal naują atsarginę kopiją. Vietoj to, iš tikrųjų „nustatyti ir pamiršti“, sukursime paketinį scenarijų, kuris bus pritaikytas prie jūsų „SQL Server“, nes bus pridėtos ir pašalintos naujos duomenų bazės.

    Jei norite patekti į tašką, tai yra atsarginis scenarijus:

    @ECHO OFF
    SETLOCAL

    REM Gaukite datą formatu YYYY-MM-DD (daroma prielaida, kad vietovė yra Jungtinės Valstijos)
    FOR / F „žetonai = 1,2,3,4 delims = /” %% A IN ('Data / T') DO SET NowDate = %% D - %% B - %% C

    REM Sukurkite atsarginių duomenų bazių sąrašą
    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“, „modelis“, „msdb“, „tempdb“) “>„% DBList% “

    Kiekvienos duomenų bazės „REM Backup“ atsarginė kopija, iš anksto įrašant datą į failo vardą
    FOR / F „žetonai = *“ %% I IN (% DBList%) DO (
    ECHO atsarginių kopijų duomenų bazė: %% I
    „SqlCmd -E -S“ „MyServer“ -Q „BACKUP DATABASE [%% I] į diską =" D: atsarginė% NowDate% _ %% I.bak "“
    ECHO.
    )

    REM Išvalykite temp failą
    IF EXIST “% DBList%” DEL / F / Q „% DBList%“

    ENDLOCAL

    Darant prielaidą, kad data yra 2009 m. Sausio 1 d. Ir turite 3 duomenų bazes, pavadintas „MyDB“, „AnotherDB“ ir „DB Name with Spaces“, scenarijus sukurs 3 rinkmenas atsarginėje vietoje:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Pavadinimas su „Spaces.bak“
    • 2009-01-13_MyDB.bak

    Partijos scenarijaus pritaikymas ir vykdymas

    Žinoma, norėsite pritaikyti scenarijų prie savo aplinkos, todėl čia reikia ką daryti:

    • Jei jūsų įrenginio lokalė nėra nustatyta JAV, komanda „Data / T“ negali grąžinti datos „Tue 01/13/2009“ formatu. Tokiu atveju kintamasis „NowDate“ nesukurs norimo formato ir turėtų būti koreguojamas. (1 vieta)
    • Pakeiskite „MyServer“ į „SQL Server“ pavadinimą (prireikus pridėkite egzemplioriaus pavadinimą). (2 vietos)
    • Duomenų bazės „master“, „modelis“, „msdb“ ir „tempdb“ yra duomenų bazės, siunčiančios su „SQL Server“. Jei nenorite, kad jų atsarginės kopijos būtų sukurtos, į šį sąrašą galite įtraukti papildomų duomenų bazių pavadinimus. (1 vieta)
    • Pakeiskite atsarginę vietą iš „D: Atsarginė kopija“ į vietą, kurioje norite išsaugoti duomenų bazės atsargines kopijas.

    Kai pritaikysite partijos scenarijų, suplanuokite jį paleisti per „Windows Task Scheduler“ kaip naudotoją su administratoriaus teisėmis ir visi esate nustatyti.