Описание
Тема резервного копирования баз данных SQL актуальна будет всегда, поэтому привожу свой пример решения этой задачи.
Основная проблема SQL Server при создании бэкапов это то, что штатными средствами заставить его делать эти бэкапы на FTP трудно (по крайней мере я не нашел как это сделать). При желании можно заставить делать копии в сетевую папку, но не на FTP. В результате был создан этот скрипт...
Скрипт осуществляет резервное копирование всех баз данных текущего SQL сервера на FTP.
Все настраиваемые параметры вынесены в комментарий "НАСТРОЙКИ".
Если используется SQL ниже 2008 то уберите "COMPRESSION" в конструкции BACKUP (эта конструкция позволяет в 2008 SQL сервере сжимать бэкап).
Backup получает имя, состоящее из имени базы данных и текущей даты и помещается на FTP
сервер в папку @FtpFolder\@ServerName\DataBaseName\Base
Base вида 2010_07_19___22_30_DataBaseName.bak
Вы можете ограничить перечень баз данных для резервного копирования, отредактировав конструкцию
"WHERE" в определении курсора.
Если резервная копия по каким то причинам не сделается, то на мыло отправляется письмо.
Только предварительно нужно настроить SQL Server для отправки писем... Сам скрипт был найден на просторах интернета (сейчас уже и не знаю кто автор), но в нем не было работы с FTP и отправки на почту.
Установка
Для того чтобы скрипт заработал снала необходимов включить "xp_cmdshell" (если по-простому - выполнение команды Windows из скрипта SQL Server из командной строки)
Для этого выполните следующие конструкции:
-- << CUT START
USE master;
GO
EXEC sp_configure 'show advanced option', '1';
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE
EXEC sp_configure 'SQL Mail XPs', 1
RECONFIGURE
-- >> CUT END
Далее создать в MaintancePlan план в котором вставить задачу "Execute T-SQL Statement Task" в него вставляем текст, который во вложении, настраиваем расписание работы плана. Все.
Можно запускать и смотреть что получается.