Startpagina » hoe » Batch-script om een ​​backup te maken van al uw SQL Server-databases

    Batch-script om een ​​backup te maken van al uw SQL Server-databases

    We hebben al besproken hoe u een SQL Server-database kunt back-uppen vanaf de opdrachtregel, dus wat als u al uw databases tegelijk wilt back-uppen? U kunt een batchty script maken dat de back-upopdracht voor elke database uitvoert, maar dit script moet worden bijgewerkt telkens wanneer een database wordt toegevoegd of verwijderd. Bovendien worden de back-ups van de database allemaal aan één bestand toegevoegd, dat bij elke run groter wordt naarmate de nieuwe back-up groter is. In plaats daarvan zullen we, op ware "set it and forget it" -wijze, een batch-script maken dat zich aanpast aan uw SQL Server wanneer nieuwe databases worden toegevoegd en verwijderd.

    Om precies te zijn, is dit het back-up script:

    @ECHO OFF
    SETLOCAL

    REM Krijg de datum in het formaat JJJJ-MM-DD (gaat ervan uit dat de locale de Verenigde Staten is)
    FOR / F "tokens = 1,2,3,4 delims = /" %% A IN ('Datum / T') DOEN SET NowDate = %% D - %% B - %% C

    REM Maak een lijst met te back-uppen databases
    SET DBList =% SystemDrive% SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON; SELECT-naam FROM master.dbo.sysDatabases WAAR [Name] NOT IN ('master', 'model', 'msdb', 'tempdb') ">"% DBList% "

    REM Back-up van elke database, waarbij de datum aan de bestandsnaam wordt voorafgegaan
    FOR / F "tokens = *" %% I IN (% DBList%) DO (
    ECHO Back-up van database: %% I
    SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] TO Disk =" D: Backup% NowDate% _ %% I.bak ""
    ECHO.
    )

    REM Maak het tijdelijke bestand schoon
    INDIEN BESTAAT "% DBList%" DEL / F / Q "% DBList%"

    ENDLOCAL

    Ervan uitgaande dat de datum 1/13/2009 is en u heeft 3 databases met de naam 'MyDB', 'AnotherDB' en 'DB Name with Spaces', produceert het script 3 bestanden op de opgegeven back-uplocatie:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Naam met Spaces.bak
    • 2009-01-13_MyDB.bak

    Het batch-script aanpassen en uitvoeren

    Natuurlijk wilt u het script aanpassen aan uw omgeving, dus hier is wat u moet doen:

    • Als de landinstelling van uw apparaat niet is ingesteld op de VS, geeft de opdracht 'Datum / T' de datum mogelijk niet terug in de notatie "Di 01-01-13/2009". Als dit het geval is, zal de variabele NowDate niet het gewenste formaat produceren en moet deze worden aangepast. (1 plaats)
    • Wijzig 'MyServer' in de naam van uw SQL Server (voeg de naam van het exemplaar toe, indien van toepassing). (2 plaatsen)
    • De databases met de naam 'master', 'model', 'msdb' en 'tempdb' zijn databases die worden geleverd met SQL Server. U kunt extra databasenamen aan deze lijst toevoegen als u niet wilt dat er een back-up van wordt gemaakt. (1 plaats)
    • Wijzig de back-uplocatie van 'D: Backup' naar de locatie waar u de databaseback-upbestanden wilt opslaan.

    Nadat u het batchtype hebt aangepast, plant u het om via Windows Task Scheduler uit te voeren als een gebruiker met beheerdersrechten en bent u klaar.