Главная » Статьи » ПК и все что связанно

Сохранение резервных копий баз данных в MS SQL Server 2008 R2 на FTP-сервер

1. Создание bat-файла для копирования на FTP-сервер

Согласно стратегии резервного копирования, приведенной в статье «Копирование и восстановление баз данных в Microsoft SQL Server 2008 R2», нам необходимо сохранять ежедневные полные бэкапы производственных баз данных на FTP-сервере и хранить их там 1 месяц с момента создания.

О создании «батника» для копирования произвольного файла на FTP-сервер, я уже писал в статье «Скачивание, загрузка и удаление файлов с FTP-сервера из командной строки».

Но дело в том, что имя файла, полученного в результате резервного копирования в SQL Server Management Studio, имеет примерно следующий вид:

BASE1_backup_2013_06_25_030007_5153516.bak

состоящий из имени базы, слова backup, даты и времени создания копии. Поэтому имя файла необходимо «вычислять» каждый раз от даты копирования. В данном случае — от текущей даты. Для построении имени файла резервной копии будем использовать следующий код bat-файла:

rem ***** Вычислим параметры текущей даты и имена файлов *****
set year=%date:~6%
set month=%date:~3,-5%
set day=%date:~0,-8%
set file_name="%base_name%_backup_%year%_%month%_%day%_*.bak"
set file_name_on_ftp="%base_name%_backup_%year%_%month%_%day%.bak"

Здесь переменная %date% возвращает строковое представление даты, из которого мы извлекаем все необходимые параметры и собираем из них имя файла. Следует помнить, что формат возвращаемой строки зависит от региональных настроек системы. Поэтому чтобы вышеприведенный код работал, необходимо убедиться, что переменная %date% возвращает строку вида: «09.07.2013» . Проверить это можно выполнив:

echo %date%

backup_ftp_copy_001

Таким образом, полный текст файла copy_on_ftp.bat, для копирования резервной копии базы SQL-сервера на FTP, будет следующим:

rem ***** Отключаем вывод на экран *****
echo off

rem ***** Запишем все значения переменных *****
set ftp_host=
set ftp_username=
set ftp_pass=
set file_transport=transport.txt
set base_name=%1
set dir_from=%2
set dir_to=%3

rem ***** Вычислим параметры текущей даты и имена файлов *****
set year=%date:~6%
set month=%date:~3,-5%
set day=%date:~0,-8%
set file_name="%base_name%_backup_%year%_%month%_%day%_*.bak"
set file_name_on_ftp="%base_name%_backup_%year%_%month%_%day%.bak"

rem ***** Создаем файл с командами ftp ***** 
echo open %ftp_host%>%file_transport%
echo user %ftp_username% %ftp_pass%>>%file_transport%
echo cd %dir_to%>>%file_transport%
echo lcd %dir_from%>>%file_transport%
echo put %file_name% %file_name_on_ftp%>>%file_transport%
echo bye>>%file_transport%

rem ***** Запускаем на исполнение *****
ftp -v -n -s:%file_transport%

rem ***** Удаляем файл с командами ftp *****
del %file_transport%

Необходимо только указать параметры подключения к FTP-серверу. Имя базы данных, каталог с копией на локальном компьютере и каталог на сервере здесь задаются в качестве параметров. Соответственно, чтобы скопировать копию базы BASE1 из «C:\Backup\BASE1» на FTP-сервер в «Backup/SQL/BASE1» за сегодняшнее число, необходимо выполнить:

backup_ftp_copy_002

Аналогичным образом строятся файлы для удаления старых копий с FTP-сервера. Согласно выбранной стратегии резервного копирования, нам необходимы «батники» для удаления копий месячной del_on_ftp_last_month.bat и годичной del_on_ftp_last_year.bat давности.

2. Создание задания Агента SQL Server для запуска bat-файлов

Теперь перейдем к SQL-серверу. В моем примере это Microsoft SQL Server 2008 R2. Но для других версий SQL Server, действия будут аналогичными.

Создадим задание для запуска bat-файлов, которые будут копировать базу данных master и удалять соответствующую копию прошлого года. Для этого запустим SQL Sever Management Studio ( «Пуск» — «Все программы» — «Microsoft SQL Server 2008 R2» — «Средства SQL Server 2008 R2» ) и введем данные для авторизации.

Затем в обозревателе объектов раскроем вкладку «Агент SQL Server», кликнем правой кнопкой мыши по вкладке «Задания» и в контекстном меню выберем «Создать задание» .

backup_ftp_copy_003

Откроется окно нового задания, введем Имя и Описание и перейдем на вкладку «Шаги» .

backup_ftp_copy_004

Здесь нажмем кнопку «Создать» , чтобы добавить шаг в задание.

backup_ftp_copy_005

Напишем Имя шага, тип выберем «Операционная система (CmdExec)» и пропишем команду для копирования базы на FTP-сервер.

backup_ftp_copy_012

Затем перейдем на вкладку «Дополнительно» и укажем:

  • Действие при успехе: «Перейти к следующему шагу» ;
  • Действие при ошибке: «Завершить задание с ошибкой» ;

После чего жмем «ОК» .

backup_ftp_copy_006

Аналогичным образом создадим еще один шаг, с командой удаления прошлогодней копии базы данных.

backup_ftp_copy_007

С той лишь разницей, что при успехе необходимо «Завершить задание с успехом» .

backup_ftp_copy_008

Таким образом получилось задание, состоящее из двух последовательных шагов.

backup_ftp_copy_009

Сохраним задание нажав «ОК» .

3. Добавление заданий в существующий план обслуживания SQL Server

Ну и наконец осталось добавить созданное задание в план обслуживания, который делает резервную копию базы данных master.

Для этого на вкладке «Планы обслуживания» выделим необходимый план обслуживания, в «Панели элементов» найдем пункт «Задача «Выполнение задания агента SQL Server»» и перетащим его в окно графического представления плана. В появившемся списке всех существующих задач, выберем необходимую нам задачу и нажмем «ОК» .

backup_ftp_copy_010

После чего останется только выставить последовательность действий таким образом, чтобы задание выполнялось сразу после успешного завершения задачи «Резервное копирование базы данных» .

backup_ftp_copy_011



Источник: http://tavalik.ru/sohranenie-rezervnyx-kopij-baz-dannyx-sql-na-ftp-server/
Категория: ПК и все что связанно | Добавил: grot789 (11.03.2016)
Просмотров: 1739 | Теги: Сохранение резервных копий баз данн | Рейтинг: 5.0/1
Всего комментариев: 0
avatar

Расскажи друзьям интересные новости:


Установить на свой сайт!