Автоматический бэкап БД на SQL Server Express Edition
Создание исполняемого файла
Создаем текстовый файл, например backupGTD следующего содержания:
sqlcmd -S DECLSERVER\SQLGTD -E -Q "declare @s varchar(255) set @s='E:\backup\GTD_' + convert(varchar(1), datepart(dw, getdate())) + '.bak' backup database GTD to disk = @s with init, noformat, skip, nounload"
Sqlcmd позволяет вводить инструкции Transact-SQL, системные процедуры и файлы скриптов из командной строки в редактор запросов в режиме SQLCMD
где:
-S -задает имя сервера server[\instance_name]
DECLSERVER\SQLGTD – имя сервера\имя экземпляра, на котором крутится база.
-E -Использует для соединения с SQL Server вместо имени пользователя и пароля доверительное соединение.
-Q " cmdline query " - При запуске программы sqlcmd выполняет запрос, но выход из программы по завершении его выполнения не производится. Может быть выполнено несколько запросов, разделенных точкой с запятой. Заключайте запрос в кавычки, как показано выше.
declare – объявляем переменную s ,имя переменной всегда начинается с @, поэтому @s. В нашем случае @s это папка (диск) хранения бэкапов.
varchar(n) – задает тип переменной @s как строковый с длинной строки n, в примере 255 символов
set – задает значение переменной @s, в примере это папка backup на диске E (E:\backup\), далее задается имя бэкап файла, где набор функций convert(varchar(1), datepart(dw, getdate())) возвращает в текстовом формате с длинной в 1 символ текущий день недели (понедельник – 1, вторник – 2, и т.д.) и добавляется расширение bak? На выходе получим файл с именем GTD_номер дня недели.bak.
backup – создает бэкап
database – указывает на создание бэкапа всей базы
GTD – в нашем примере имя базы на SQL сервере
to disk – указывает на тип устройства резервного хранения, файл жесткого диска, и указана переменная @s, которой присвоено путь и имя создаваемого файла.
with init, noformat, skip, nounload –указывает на то, что необходимо произвести перезапись данных по кругу с переопределением заголовков, что позволит нам иметь 7 файлов бэкапа на каждый день недели, перезаписываемые по кругу.
Примечание: При необходимости можно использовать массу других функций, например сжатие, см. справку по запросам и функциям Transact-SQL».
Меняем расширение текстового файла на .cmd (получаем backupGTD.cmd).
Запускать необходимо с той машины, где установлена БД MS SQL
Примечание: Готовый файл находится в папке X:\Alta\utils
Автоматизация процесса
Автоматизируем процесс (на примере Microsoft Windows Server 2008):
- Заходим в Диспетчер сервера -> Конфигурация -> Планировщик заданий -> Библиотека планировщика заданий.
- Создаем простую задачу:
- Задаем имя и описание,
- Указываем периодичность (ежедневно),
- Регулярность повторений и время выполнения,
- В качестве действия указываем запуск программы,
- Указываем путь к нашему файлу backupGTD.cmd,
- Поставьте чекбокс «открыть свойства»
- В свойствах указываем, что выполнять нужно вне зависимости от регистрации пользователя и указать логин пароль учетной записи с правами администратора (спросит позже).
На закладках условия и параметры можете задать дополнительные условия выполнения (не обязательно).
- На выходе мы будем иметь примерно такую картину: