Hjemmeside » hvordan » Batch Script å sikkerhetskopiere alle SQL Server databaser

    Batch Script å sikkerhetskopiere alle SQL Server databaser

    Vi har allerede dekket hvordan du sikkerhetskopierer en SQL Server-database fra kommandolinjen, så hva om du vil sikkerhetskopiere alle databasene dine samtidig? Du kan opprette et batch script som kjører backup-kommandoen for hver database, men dette skriptet må oppdateres hver gang en database legges til eller fjernes. I tillegg vil databasekoblingene legges til en fil som vil vokse med størrelsen på den nye sikkerhetskopien hver gang den kjøres. I stedet, i sann "sett det og glem det" mote, vil vi lage et batch script som vil tilpasse seg din SQL Server som nye databaser legges til og fjernes.

    For å komme rett til poenget, er dette backup-skriptet:

    @ECHO OFF
    SETLOCAL

    REM Få dato i format YYYY-MM-DD (forutsatt at locale er USA)
    FOR / F "tokens = 1,2,3,4 delims = /" %% A IN ('Dato / T') DO SET NowDate = %% D - %% B - %% C

    REM Bygg en liste over databaser for å sikkerhetskopiere
    SET DBList =% SystemDrive% SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON; VELG Navn FRA master.dbo.sysDatabases WHERE [Name] NOT IN ('master', 'modell', 'msdb', 'tempdb') ">"% DBList% "

    REM Sikkerhetskopier hver database, og legg ut datoen til filnavnet
    FOR / F "tokens = *" %% I IN (% DBList%) DO ()
    ECHO Sikkerhetskopieringsdatabase: %% I
    SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] TIL Disk =" D: Backup% NowDate% _ %% I.bak ""
    EKKO.
    )

    REM Ryd opp tempfilen
    HVIS DET BESTE "% DBList%" DEL / F / Q "% DBList%"

    ENDLOCAL

    Forutsatt datoen er 1/13/2009 og du har 3 databaser med navnet MyDB, AnotherDB og DB DB med Spaces, vil skriptet produsere 3 filer i den angitte sikkerhetskopieringsplassen:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Navn med Spaces.bak
    • 2009-01-13_MyDB.bak

    Tilpasse og kjøre batchskriptet

    Selvfølgelig vil du ønske å tilpasse skriptet til miljøet ditt, så her er det du trenger å gjøre:

    • Hvis maskinens språk ikke er satt til USA, kan ikke kommandoen "Dato / T" returnere datoen i formatet "Tue 01/13/2009". Hvis dette er tilfelle, vil ikke NowDate-variabelen produsere ønsket format og skal justeres. (1 plass)
    • Endre "MyServer" for å være navnet på SQL Server (legg til forekomstnavnet hvis det er aktuelt). (2 steder)
    • Databasene som heter 'master', 'model', 'msdb' og 'tempdb' er databaser som leveres med SQL Server. Du kan legge til flere databasenavn til denne listen hvis du ikke vil at de skal sikkerhetskopieres. (1 plass)
    • Endre reserveplasseringen fra 'D: Backup' til stedet der du vil lagre databasens sikkerhetskopieringsfiler.

    Når du har tilpasset batch-skriptet, planlegger du å kjøre via Windows Oppgaveplanlegger som en bruker med administratorrettigheter, og du er helt innstilt.