Batch skript za varnostno kopiranje vseh vaših podatkovnih baz SQL Server
Smo že obravnavali, kako narediti varnostno kopijo baze podatkov SQL Server iz ukazne vrstice, kaj pa če želite varnostno kopirati vse vaše baze podatkov naenkrat? Ustvarite lahko paketni skript, ki za vsako bazo podatkov zažene ukaz za varnostno kopiranje, vendar pa mora biti ta skript posodobljen vsakič, ko se doda ali odstrani baza podatkov. Poleg tega bodo varnostne kopije zbirke podatkov dodane v eno datoteko, ki se bo povečala za velikost nove varnostne kopije ob vsakem zagonu. Namesto tega bomo v pravem načinu "nastavili in pozabili" ustvarili paketni skript, ki se bo prilagajal SQL strežniku, ko bodo dodane in odstranjene nove baze podatkov..
Če želite priti do točke, je to skript za varnostno kopiranje:
@ECHO OFF
SETLOCALREM Pridobite datum v obliki LLLL-MM-DD (predpostavlja se, da je locale Združene države)
FOR / F “žetoni = 1,2,3,4 delims = /” %% A IN ('Date / T') DO SET DANES = %% D - %% B - %% CREM Zgradite seznam baz podatkov za varnostno kopiranje
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Ime IZ master.dbo.sysDatabases WHERE [Ime] NOT IN ('glavni', 'model', 'msdb', 'tempdb') '> “% DBList%”REM Varnostno kopiranje vsake baze podatkov, pri čemer se datum doda imenu datoteke
FOR / F »žetoni = *« %% I IN (% DBList%) DO (
ECHO Varnostno kopiranje baze podatkov: %% I
SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%% I] TO Disk =" D: Varnostno kopiranje% NowDate% _ %% I.bak ""
ECHO.
)REM Očistite datoteko temp
ČE OBSTAJAJO »% DBList%« DEL / F / Q »% DBList%«ENDLOCAL
Ob predpostavki, da je datum 1/13/2009 in imate 3 baze podatkov z imenom "MyDB", "AnotherDB" in "DB Name with Spaces", bo skript izdelal 3 datoteke na določeni lokaciji za varnostno kopiranje:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Ime s Spaces.bak
- 2009-01-13_MyDB.bak
Prilagajanje in zagon paketnega skripta
Seveda boste želeli skript prilagoditi svojemu okolju, zato morate narediti naslednje:
- Če krajevna nastavitev naprave ni nastavljena na ZDA, ukaza "Datum / T" morda ne bo vrnila datuma v formatu "Tue 01/13/2009". V tem primeru spremenljivka NowDate ne bo ustvarila želenega formata in ga je treba prilagoditi. (1 mesto)
- Spremenite »MyServer«, da bo ime vašega strežnika SQL (dodajte ime primerka, če je primerno). (2 mest)
- Podatkovne baze z imenom „master“, „model“, „msdb“ in „tempdb“ so baze podatkov, ki se pošiljajo s strežnikom SQL Server. Tem seznamom lahko dodate dodatna imena baze podatkov, če jih ne želite varnostno kopirati. (1 mesto)
- Zamenjajte lokacijo varnostne kopije z "D: Backup" na mesto, kjer želite shraniti varnostne kopije podatkovne baze.
Ko prilagodite paketni skript, ga razporedite tako, da se bo izvajal prek razporejevalnika opravil v sistemu Windows kot uporabnik s pravicami skrbnika in da ste vsi nastavljeni.