Kotisivu » miten » Eräskripti kaikille SQL Server -tietokannoille

    Eräskripti kaikille SQL Server -tietokannoille

    Olemme jo katseet, kuinka SQL Server -tietokannan varmuuskopiointi komentoriviltä, ​​niin mitä jos haluat varmuuskopioida kaikki tietokannat kerralla? Voit luoda komentosarjan, joka suorittaa jokaisen tietokannan varmuuskopion, mutta tämä komentosarja olisi päivitettävä joka kerta, kun tietokanta lisätään tai poistetaan. Lisäksi tietokannan varmuuskopiot liitetään yhteen tiedostoon, joka kasvaa uuden varmuuskopion koon mukaan aina, kun se suoritetaan. Sen sijaan, todellisessa "aseta se ja unohda se" -muoto, luomme eräskriptin, joka mukautuu SQL-palvelimeen, kun uusia tietokantoja lisätään ja poistetaan.

    Jotta saat oikean pisteen, tämä on varmuuskopiosarja:

    @ECHO OFF
    SETLOCAL

    REM Hae päivämäärä muodossa YYYY-MM-DD (oletetaan, että alue on Yhdysvallat)
    FOR / F “tokenit = 1,2,3,4 delims = /” %% A IN ('Päiväys / T') DO SET NowDate = %% D - %% B - %% C

    REM Rakenna varmuuskopioiden luettelo tietokannoista
    SET DBList =% SystemDrive% SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Name OF master.dbo.sysDatabases WHERE [Nimi] EI IN ('master', 'malli', 'msdb', 'tempdb') '> “% DBList%”

    REM-varmuuskopio jokaisesta tietokannasta
    FOR / F “tokenit = *” %% I IN (% DBList%) DO (
    ECHO-varmuuskopiotietokanta: %% I
    SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%% I] TO Disk =" D: varmuuskopio% NowDate% _ %% I.bak ""
    ECHO.
    )

    REM Puhdista temp-tiedosto
    JOS EXIST “% DBList%” DEL / F / Q “% DBList%”

    ENDLOCAL

    Olettaen, että päivämäärä on 1/13/2009 ja sinulla on 3 tietokantoja nimeltä "MyDB", "AnotherDB" ja "DB Name with Spaces", skripti tuottaa 3 tiedostoa määritettyyn varmuuskopiointipaikkaan:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Nimi Spaces.bakilla
    • 2009-01-13_MyDB.bak

    Eräskriptin mukauttaminen ja suorittaminen

    Tietenkin haluat muokata komentosarjaa ympäristöön, joten tässä on tehtävä:

    • Jos laitteen sijaintia ei ole asetettu Yhdysvaltoihin, komento 'Date / T' ei saa palauttaa päivämäärää muodossa "ti 01/13/2009". Jos näin on, NowDate-muuttuja ei tuota haluttua muotoa ja se on säädettävä. (1 paikka)
    • Vaihda 'MyServer' -asetukseksi SQL Server -palvelimen nimi (lisää tarvittaessa nimen nimi). (2 paikkaa)
    • ”Master”, ”model”, ”msdb” ja ”tempdb” -tietokannat ovat tietokantoja, jotka toimittavat SQL Serverin. Voit lisätä luetteloon muita tietokantojen nimiä, jos et halua niiden varmuuskopiointia. (1 paikka)
    • Muuta varmuuskopion sijainti D: varmuuskopioinnista paikkaan, johon haluat tietokannan varmuuskopiotiedostot.

    Kun olet mukauttanut eräskriptiä, ajoita se Windows Task Schedulerin kautta käyttäjäksi, jolla on järjestelmänvalvojan oikeudet, ja olet kaikki asetettu.