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
SETLOCALREM 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 - %% CREM 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.