Партида скрипт за архивиране на всички ваши SQL Server бази данни
Вече разгледахме как да архивираме база данни на SQL Server от командния ред, така че ако искате да архивирате всичките си бази данни наведнъж? Можете да създадете пакетен скрипт, който изпълнява командата за архивиране за всяка база данни, но този скрипт трябва да се актуализира всеки път, когато се добавя или премахва база данни. Освен това резервните копия на базата данни ще бъдат добавени към един файл, който ще нараства с размера на новия архив всеки път, когато се изпълнява. Вместо това, в истинската мода „Задай и забрави“, ще създадем партиден скрипт, който ще се адаптира към вашия SQL Server, когато се добавят и премахват нови бази данни..
За да стигнете до точката, това е резервният скрипт:
@ECHO OFF
SETLOCALREM Получаване на дата във формат YYYY-MM-DD (приема се, че локалът е САЩ)
FOR / F "токени = 1,2,3,4 delims = /" %% A IN ("Date / T") НАСТИЛ НАСТЪПЛЕНИЕ = %% D - %% B - %% CREM Изграждане на списък с бази данни за архивиране
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Име от master.dbo.sysDatabases WHERE [Име] NOT IN ("главен", "модел", "msdb", "tempdb") ">"% DBList% "REM Архивирайте всяка база данни, като добавяте дата към името на файла
FOR / F "символи = *" %% I IN (% DBList%) DO (
ECHO Архивиране на база данни: %% I
SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%% I] TO Disk =" D: Резервно копие на% NowDate% _ %% I.bak "
ECHO.
)REM Почистване на временния файл
IF EXIST “% DBList%” DEL / F / Q “% DBList%”ENDLOCAL
Ако приемем, че датата е 1/13/2009 и имате 3 бази данни, наречени 'MyDB', 'AnotherDB' и '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 като потребител с права на администратор и всички сте настроени.