Автоматическое резервное копирование (планировщик ОС Windows)
Назначение задания по резервному копированию баз данных сервера SQL средствами планировщика ОС Windows.
Поскольку в MS SQL редакции Express отсутствует планировщик заданий, то автоматическое периодическое резервное копирование создается через назначение задания для ОС Windows: создать новое задание по периодическому исполнению (запуску) специального командного файла (bat файл), в котором прописана команда по созданию резервной копии, при этом на момент запуска bat файла SQL сервер должен быть запущен.
Приводим как пример содержимого командного bat файла (выделена синим) по созданию резервной копии, результатом исполнения которого является архив в формате rar. Для применения ее в автоматическом режиме скопировать от строки "rem --начало bat файла" и до строки "rem-- конец bat файла" в текстовый файл с расширением .bat и в планировщике ОС Windows задать периодичность запуска этого файла.
rem --начало bat файла--starting bat file for create backup of SQL data base -----
@echo off
rem path_work_sql - путь (папка) на SQL сервере и относительно SQL сервера для резервных копий. Должен заканчиваться на \ и существовать.
rem path_work_to_sql - тот же путь (папка) на SQL сервере, но относительно рабочей станции.
rem log_name - имя лог файла создания резервной копии.
rem base_name - имя базы данных.
rem winrarcommand - команда с путем вызова RAR архиватора.
rem arjcommand - команда вызова arj архиватора (по умолчанию не применяется).
rem sql_adm_login - логин администратора SQL сервера (sa).
rem sql_adm_pass - пароль администратора SQL сервера (должен быть, пустой недопустим).
rem sql_serv_name - имя SQL servera.
rem --------------------- ИНИЦИАЛИЗАЦИЯ ----------------------------------
set path_work_sql=c:\base\backup\
set path_work_to_sql=\\wood\base\backup\
set log_name=create_backup.log
set base_name=budjet_2009
set sql_serv_name=blade
set sql_adm_login=sa
set sql_adm_pass=123
set winrarcommand="C:\Program Files\WinRAR\Rar.exe"
set arjcommand="C:\Program Files\arc\arj.exe"
rem ---------------ВЫПОЛНЕНИЕ ---------------------------------- создание резервной копии
set ActualDate=%DATE:~6,4%_%DATE:~3,2%_%DATE:~0,2%
set actualTime=%TIME:~0,2%_%TIME:~3,2%
set logfile=%path_work_to_sql%%log_name%
set base_backup=%path_work_sql%%base_name%__%ActualDate%__%actualTime%.bak
set base_backup_rar=%path_work_to_sql%%base_name%__%ActualDate%__%actualTime%.bak
set arj_name=%path_work_to_sql%%base_name%_bak_
echo ################################################################################ >> %logfile%
date /t >> %logfile%
time /t >> %logfile%
echo exec( 'BACKUP DATABASE %base_name% TO DISK = N''%base_backup%'' WITH INIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT') | osql -U %sql_adm_login% -P %sql_adm_pass% -S %sql_serv_name%>> %logfile%
rem %arjcommand% m -jm -jt -hk -e -i %arj_name% %base_backup_rar% >> %logfile%
%winrarcommand% a -rr5p -df -dh -ibck -inul -ep -agYYYY-MM-DD__HH-MM "%arj_name%" "%base_backup_rar%"
set path_work_sql=
set path_work_to_sql=
set log_name=
set base_name=
set sql_serv_name=
set sql_adm_login=
set sql_adm_pass=
set ActualDate=
set actualTime=
set logfile=
set base_backup=
set base_backup_rar=
set arj_name=
set arjcommand=
rem --конец bat файла---------------------------------------------------------------------------
Замечания по bat файлу
1. Расшифровка параметров в блоке ИНИЦИАЛИЗАЦИЯ.
- path_work_sql - путь (папка) на SQL сервере и относительно SQL сервера, где будет создаваться резервная копия. Должен заканчиваться на \ и существовать. Пример: D:\base\backup\ .
- path_work_to_sql - тот же путь (папка) на SQL сервере, но относительно компьютера, на котором запускается данный файл. Т.е. запуск bat файла возможен на рабочей станции. Пример: \\server_name\base\backup\ .
- log_name - имя лог файла создания резервной копии.
- base_name - имя базы данных. Имя файла резервной копии базы будет совпадать с именем базы + дата создания (файл будет удален после архивации). Имя файла архива резервной копии будет совпадать с именем базы данных + bak + дата создания (для RAR архива).
- winrarcommand - команда с путем вызова RAR архиватора.
- arjcommand - команда вызова arj архиватора (если применяется: раскомментировать строку вызова arj и закомментировать строку вызова rar).
- sql_adm_login - логин администратора SQL сервера (sa).
- sql_adm_pass - пароль администратора SQL сервера (должен быть, пустой недопустим).
- sql_serv_name - имя SQL servera.
2. Правило указания путей.
В разделе ИНИЦИАЛИЗАЦИИ желательно указывать пути без русских символов и без пробелов.
Если путь содержит символы кирилицы, то путь надо указывать в DOS формате 8.3. Например, вместо D:\#Базы\backup\ указать D:\#c726~1\backup\ (это пример, в реальности имя в коротком формате генерируется при создании и в общем случае не зависит от самого значения имени на кирилице).
Если путь содержит пробелы, то значение параметра надо заключить в кавычки. Пример
set path_work_sql="c:\base budjet\backup\"
3. Правило указания параметров.
При корректировке параметров в разделе ИНИЦИАЛИЗАЦИИ необходимо соблюдать следующее правило: недопустимы пробелы вокруг символа = и в конце значений параметров (в конце строк).
Правильно set path_work_sql=c:\base\backup\
Не правильно set path_work_sql = c:\base\backup\
4. Исходные требования и результат выполнения файла:
- папка, указанная в параметре path_work_sql должна существовать на момент выполнения файла (в примере c:\base\backup).
- подразумевается наличие архиватора Rar.exe (можно ARJ.EXE, см описание параметров п.1) .
- подразумевается, что SQL Server корректно установлен (в переменной окружения есть путь к папке Binn\ ).
- резервная копия базы удаляется после завершения архивации.
- в заданной папке (параметр path_work_sql) ведётся протокол работы создания резервных копий, в данном примере это файл create_backup.log (пополняется при каждом вызове).
- в данном примере работа ведётся с базой budjet_2009.
- в данном примере подключение производится к SQL серверу <blade> пользователем <sa> с паролем <123>.
- в результате работы программы с параметрами, указаными в примере, в папке c:\base\backup будет создан архив с именем budjet_2009_bak_2009-02-17__21-57.rar (дата создания 17 февраля 2009г., 21 час 57 минут), содержащий файл резервной копии базы данных с именем budjet_2009__2009_02_17__21_57.bak .