Пакетный скрипт для резервного копирования всех ваших баз данных SQL Server
Мы уже рассмотрели, как сделать резервную копию базы данных SQL Server из командной строки, так что, если вы хотите сделать резервную копию всех ваших баз данных одновременно? Вы можете создать пакетный сценарий, который запускает команду резервного копирования для каждой базы данных, но этот сценарий необходимо будет обновлять при каждом добавлении или удалении базы данных. Кроме того, все резервные копии базы данных будут добавлены в один файл, который будет увеличиваться по размеру новой резервной копии при каждом запуске. Вместо этого, в режиме «установи и забудь» мы создадим пакетный скрипт, который будет адаптироваться к вашему SQL Server по мере добавления и удаления новых баз данных..
Чтобы перейти прямо к делу, это скрипт резервного копирования:
@ECHO OFF
SETLOCALREM Получить дату в формате ГГГГ-ММ-ДД (предполагается, что языковой стандарт - США)
FOR / F “токены = 1,2,3,4 delims = /” %% A IN ('Date / T') DO SET NowDate = %% D - %% B - %% CREM Составьте список баз данных для резервного копирования
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q «SET NoCount ON; ВЫБЕРИТЕ Имя ИЗ master.dbo.sysDatabase, ГДЕ [Имя] NOT IN («master», «model», «msdb», «tempdb») »>«% DBList% »REM Резервное копирование каждой базы данных, добавляя дату к имени файла
FOR / F «токены = *» %% I IN (% DBList%) DO (
ECHO Резервное копирование базы данных: %% I
SqlCmd -E -S MyServer -Q «РЕЗЕРВНАЯ БАЗА ДАННЫХ [%% I] TO Disk =" D: Резервное копирование% NowDate% _ %% I.bak "»
ECHO.
)REM Очистить временный файл
IF EXIST «% DBList%» DEL / F / Q «% DBList%»ENDLOCAL
Предполагая, что дата 13.01.2009, и у вас есть 3 базы данных с именами «MyDB», «AnotherDB» и «Имя БД с пробелами», сценарий создаст 3 файла в указанном месте резервного копирования:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Имя с помощью Spaces.bak
- 2009-01-13_MyDB.bak
Настройка и запуск пакетного сценария
Конечно, вы захотите настроить скрипт для своей среды, поэтому вот что вам нужно сделать:
- Если языковой стандарт вашего компьютера не установлен на США, команда «Дата / T» может не возвращать дату в формате «вт 01/13/2009». Если это так, переменная NowDate не будет производить желаемый формат и должна быть скорректирована. (1 место)
- Измените «MyServer» на имя вашего SQL Server (добавьте имя экземпляра, если применимо). (2 места)
- Базы данных с именами «master», «model», «msdb» и «tempdb» являются базами данных, которые поставляются с SQL Server. Вы можете добавить дополнительные имена баз данных в этот список, если не хотите, чтобы их резервные копии создавались. (1 место)
- Измените расположение резервной копии с «D: Backup» на место, где вы хотите хранить файлы резервных копий базы данных..
После того, как вы настроили пакетный сценарий, запланируйте его запуск через планировщик заданий Windows как пользователь с правами администратора, и все готово..