Am acoperit deja modul de rezervare a unei baze de date SQL Server din linia de comandă, deci dacă doriți să efectuați o copie de rezervă a tuturor bazelor de date simultan? S-ar putea crea un script batch care rulează comanda de backup pentru fiecare bază de date, dar acest script ar trebui să fie actualizat de fiecare dată când o bază de date este adăugată sau eliminată. În plus, copii de siguranță ale bazei de date vor fi atașate la un fișier care va crește de mărimea noului copier de siguranță de fiecare dată când este rulat. În schimb, în modul "setați-l și uitați", vom crea un script batch care se va adapta la serverul dvs. SQL, pe măsură ce se adaugă și se elimină noi baze de date.
Pentru a ajunge la un punct, acesta este scriptul de backup:
@CHO OFF
setlocalREM Obțineți data în format YYYY-MM-DD (presupune că localizarea este în Statele Unite)
FORT / F "= 1,2,3,4 delims = /" %% A IN ('Date / T') DO SET AcumData = %% D - %% B - %% CREM Creați o listă de baze de date pentru copierea de rezervă
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON; SELECT Numele din master.dbo.sysDatabase WHERE [Nume] NOT IN ('master', 'model', 'msdb', 'tempdb') ">"% DBList%REM Backup fiecare bază de date, prepending data la numele fișierului
FORF / F "(*)"%% I IN (% DBList%) DO (
ECHO Baza de date de rezervă: %% I
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] Pentru a Disk =" D: Backup% NowDate% _ %% I.bak ""
ECOU.
)REM Curățați fișierul temp
DACĂ EXISTĂ "% DBList%" DEL / F / Q "% DBList%"ENDLOCAL
Presupunând că data este 1/13/2009 și aveți 3 baze de date numite "MyDB", "AnotherDB" și "DB Name with Spaces", scriptul va produce 3 fișiere în locația de backup specificată:
Desigur, veți dori să personalizați scenariul pentru mediul dvs., astfel că aici este ceea ce trebuie să faceți:
Odată ce ați personalizat scriptul de lot, programați-l să ruleze prin Windows Task Scheduler ca un utilizator cu drepturi de administrator și sunteți cu toții setați.