Мы уже рассмотрели, как сделать резервную копию базы данных 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», «AnotherDB» и «DB Name with Spaces», сценарий будет создавать 3 файла в указанном месте резервного копирования:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Название с Spaces.bak
- 2009-01-13_MyDB.bak
Настройка и запуск пакетного скрипта
Конечно, вы захотите настроить сценарий в своей среде, вот что вам нужно сделать:
- Если языковой стандарт вашей машины не установлен в США, команда «Дата / Т» может не вернуть дату в формате «Tue 01/13/2009». Если это так, переменная NowDate не будет выдавать желаемый формат и должна быть скорректирована. (1 место)
- Измените «MyServer» на имя вашего SQL Server (добавьте имя экземпляра, если это применимо). (2 места)
- Базы данных с именем «master», «model», «msdb» и «tempdb» - это базы данных, которые поставляются с SQL Server. Вы можете добавить дополнительные имена баз данных в этот список, если вы не хотите, чтобы они были скопированы. (1 место)
- Измените расположение резервной копии с «D: Резервное копирование» в том месте, где вы хотите сохранить файлы резервной копии базы данных.
После того, как вы настроили пакетный скрипт, запланируйте его запуск с помощью планировщика задач Windows в качестве пользователя с правами администратора, и все установлено.