Već smo pokrivali kako sigurnosno kopirati SQL Server bazu podataka iz naredbenog retka, pa što ako želite backup svih vaših baza podataka odjednom? Možete stvoriti skupnu skriptu koja pokreće pričuvnu naredbu za svaku bazu podataka, ali ta će se skripta morati ažurirati svaki put kada se doda ili ukloni baza podataka. Osim toga, sigurnosne kopije baze podataka bit će priložene jednoj datoteci koja će se povećati po veličini nove sigurnosne kopije svaki put kad se pokrene. Umjesto toga, u stvarnom "postavite ga i zaboravite" modu, izradit ćemo skupnu skriptu koja će se prilagoditi vašem sustavu SQL Server, budući da su nove baze podataka dodane i uklonjene.
Da biste dobili pravo na točku, ovo je rezervna skripta:
@ECHO OFF SETLOCAL
REM Get date in format YYYY-MM-DD (assumes the locale is the United States) FOR /F “tokens=1,2,3,4 delims=/” %%A IN (‘Date /T’) DO SET NowDate=%%D-%%B-%%C
REM Build a list of databases to backup SET DBList=%SystemDrive%SQLDBList.txt SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)” > “%DBList%”
REM Backup each database, prepending the date to the filename FOR /F “tokens=*” %%I IN (%DBList%) DO ( ECHO Backing up database: %%I SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%%I] TO Disk=’D:Backup%NowDate%_%%I.bak'” ECHO. )
REM Clean up the temp file IF EXIST “%DBList%” DEL /F /Q “%DBList%”
ENDLOCAL
Pod pretpostavkom da je datum 1/13/2009 i imate 3 baze podataka pod nazivom "MyDB", "AnotherDB" i "DB naziv s prostorima", skripta će proizvesti 3 datoteke na mjestu rezervnog mjesta:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Naziv s Spaces.bak
- 2009-01-13_MyDB.bak
Prilagodba i izvođenje Batch skripte
Naravno, htjet ćete prilagoditi skriptu u svojoj okolini pa evo što trebate učiniti:
- Ako lokalni uređaj nije postavljen na SAD, naredba 'Datum / T' možda neće vratiti datum u obliku "Tue 01/13/2009". Ako je to slučaj, varijabla NowDate neće proizvesti željeni format i treba ga podesiti. (1 mjesto)
- Promijenite "MyServer" kao naziv vašeg SQL Server-a (dodajte naziv instance ako je primjenjivo). (2 mjesta)
- Baza podataka pod nazivom 'master', 'model', 'msdb' i 'tempdb' su baze podataka koje se isporučuju uz SQL Server. Na popis možete dodati dodatne nazive baze podataka ako ne želite da budu sigurnosno kopirani. (1 mjesto)
- Promijenite rezervnu lokaciju iz "D: Sigurnosna kopija" na mjesto na kojem želite pohraniti sigurnosne kopije baze podataka.
Nakon što prilagodite skriptu serije, zakažite ga da se pokrene putem programa Windows Task Scheduler kao korisnika s pravima administratora i sve ste postavljeni.