Homepage » hogyan kell » Batch Script az összes SQL Server adatbázis biztonsági mentéséhez

    Batch Script az összes SQL Server adatbázis biztonsági mentéséhez

    Már foglalkozunk az SQL Server adatbázis biztonsági mentésével a parancssorból, így mi van, ha az összes adatbázisát egyszerre szeretné menteni? Létrehozhat egy kötegelt parancsfájlt, amely az egyes adatbázisokhoz futtatja a biztonsági mentést, de ezt a parancsfájlt minden egyes adatbázis hozzáadásakor vagy eltávolításakor frissíteni kell. Továbbá az adatbázis biztonsági mentései mindegyikhez hozzáadódnak egy olyan fájlhoz, amely az új biztonsági másolat méretével növekszik minden egyes futtatáskor. Ehelyett, igazán „állítsa be és felejtsd el” divatunkat, létrehozunk egy kötegelt parancsfájlt, amely az SQL Server-hez alkalmazkodik, mivel új adatbázisok kerülnek hozzáadásra és eltávolításra.

    A pont eléréséhez ez a biztonsági mentési szkript:

    @ECHO KI
    SETLOCAL

    REM A dátumot formátumban YYYY-MM-DD formátumban kapja (feltételezi, hogy a helyszín az Egyesült Államok)
    FOR / F „tokenek = 1,2,3,4 delims = /” %% A IN ('Dátum / T') DO SET NowDate = %% D - %% B - %% C

    REM A biztonsági mentéshez hozzon létre egy adatbázisokat
    SET DBList =% SystemDrive% SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount BE; SELECT Name FROM master.dbo.sysDatabases WHERE [Név] NEM IN ('master', 'model', 'msdb', 'tempdb') ">„% DBList% ”

    A REM Backup minden adatbázist, előkészítve a dátumot a fájlnévre
    FOR / F „tokenek = *” %% I IN (% DBList%) DO (
    ECHO biztonsági mentési adatbázis: %% I
    SqlCmd -E -S MyServer -Q „BACKUP DATABASE [%% I] TO Disk =" D: biztonsági másolat% NowDate% _ %% I.bak ""
    VISSZHANG.
    )

    REM Tisztítsa meg a temp fájlt
    HA EXIST „% DBList%” DEL / F / Q „% DBList%”

    ENDLOCAL

    Feltételezve, hogy a dátum 2009/01/13, és 3 adatbázisunk van, amelyek neve 'MyDB', 'AnotherDB' és 'DB Name with Spaces', a parancsfájl 3 fájlt állít elő a megadott biztonsági mentési helyen:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Név Spaces.bak
    • 2009-01-13_MyDB.bak

    A kötegfájl testreszabása és futtatása

    Természetesen szeretné testre szabni a szkriptet a környezetéhez, így itt kell tennie:

    • Ha a készülék helyszíne nem az Egyesült Államokra van állítva, akkor a „Dátum / T” parancs nem adhatja vissza a dátumot „Tue 01/13/2009” formátumban. Ebben az esetben a NowDate változó nem adja meg a kívánt formátumot, és módosítani kell. (1 hely)
    • Módosítsa a 'MyServer'-et az SQL Server nevéhez (adja meg a példány nevét, ha van ilyen). (2 hely)
    • A 'master', 'model', 'msdb' és 'tempdb' adatbázisok SQL Server kiszolgálóval szállított adatbázisok. Ha nem akarja, hogy biztonsági másolatot készítsenek, ehhez a listához további adatbázisneveket adhat hozzá. (1 hely)
    • Módosítsa a biztonsági mentési helyet a „D: Backup” -ről arra a helyre, ahol az adatbázis-biztonsági mentési fájlokat tárolja.

    Miután testreszabta a kötegelt parancsfájlt, ütemezze azt a Windows Feladatütemezőn keresztül, mint adminisztrátori jogokkal rendelkező felhasználóként, és mindannyian be van állítva.