If-Koubou

Batch skripta za sigurnosno kopiranje svih vaših SQL Server baza podataka

Batch skripta za sigurnosno kopiranje svih vaših SQL Server baza podataka (Kako da)

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:

@Heko isključeno
SETLOCAL

REM Dohvatite datum u obliku YYYY-MM-DD (pretpostavlja da je lokalna jedinica Sjedinjene Države)
FOR / F "oznake = 1,2,3,4 delims = /" %% A IN ('Datum / T') DO SET NowDate = %% D - %% B - %% C

REM Izradite popis baza podataka za backup
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON; SELECT Naziv FROM master.dbo.sysDatabases GDJE [Name] NOT IN ('master', 'model', 'msdb', 'tempdb') ">"% DBList% "

REM Sigurnosno kopiranje svake baze podataka, prije datuma do naziva datoteke
FOR / F "znakova = *" %% I IN (% DBList%) DO (
ECHO Sigurnosna kopija baze podataka: %% I
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] na Disk =" D: Sigurnosna kopija% NowDate% _ %% I.bak ""
JEKA.
)

REM Očistite datoteku temp
Ako postoji "% 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.