Вече разгледахме как да архивирате SQL Server база данни от командния ред, така че какво, ако искате да архивирате всичките си бази данни наведнъж? Бихте могли да създадете партиден скрипт, който изпълнява резервната команда за всяка база данни, но този скрипт трябва да се актуализира всеки път, когато се добавя или премахва база данни. Освен това резервните копия на базата данни ще бъдат добавени към един файл, който ще нараства с размера на новото резервно копие всеки път, когато се изпълнява. Вместо това, в истинската мода "Настройте я и я забравяйте", ще създадем партиден скрипт, който ще се адаптира към вашия SQL Server, когато се добавят и премахват нови бази данни.
За да стигнете до точката, това е резервният скрипт:
@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
Ако приемем, че датата е 1/13/2009 и имате 3 бази данни, наречени "MyDB", "OtherDB" и "DB Name with Spaces", скриптът ще създаде 3 файла в посоченото място за архивиране:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Име с Spaces.bak
- 2009-01-13_MyDB.bak
Персонализиране и изпълнение на партидния скрипт
Разбира се, ще искате да персонализирате сценария за вашата среда, така че ето какво трябва да направите:
- Ако локалът на вашата машина не е настроен на САЩ, командата 'Date / T' може да не върне датата във формата "Tue 01/13/2009". Ако случаят е такъв, променливата "NowDate" няма да даде желания формат и трябва да бъде коригирана. (1 място)
- Променете "MyServer", за да бъде името на вашия SQL Server (добавете името на потребителския модел, ако е приложимо). (2 места)
- Базите данни, наречени "master", "model", "msdb" и "tempdb", са бази данни, които се доставят със SQL Server. Можете да добавите допълнителни имена на базата данни в този списък, ако не искате те да бъдат архивирани. (1 място)
- Променете местоположението за архивиране от "D: Backup" до мястото, където искате да се съхраняват архивните файлове на базата данни.
След като персонализирате партидния скрипт, планирайте го да се изпълнява чрез Windows Task Scheduler като потребител с права на администратор и всички сте настроени.