Резервное копирование на FTP средствами SQL Server

20.07.10

База данных - Архивирование (backup)

Тема резервного копирования баз данных SQL актуальна будет всегда, поэтому привожу свой пример решения этой задачи. Скрпит SQL-сервера для создания бэкапов на FTP, при ошибке отправляется письмо администратору. Все операции выполняются штатными средствами SQL-сервера и Windows.

Скачать файлы

Наименование Файл Версия Размер
BackupFTP.sql
.sql 9,18Kb
236
.sql 9,18Kb 236 Скачать

Описание

Тема резервного копирования баз данных 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" в него вставляем текст, который во вложении, настраиваем расписание работы плана. Все.

Можно запускать и смотреть что получается.

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42523    10    24    

38

BackUPv8 - система резервного копирования баз 1С

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    14733    13    6    

18

Резервное копирование журнала транзакций, наконец-то!

Архивирование (backup) Администрирование СУБД Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    5879    n_mezentsev    15    

25

Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    19836    sapervodichka    36    

142

Архивирование базы в dt и дамп postgres

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    4720    2    Gnom-Gluck    6    

6

Утилита копирования баз данных 1С

Архивирование (backup) Платформа 1С v8.3 Абонемент ($m)

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4236    3    Giblarium    12    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. luns 01.10.10 12:36 Сейчас в теме
хорошая статья.
правда COMPRESSION не работает в standart версии, поэтому в ней тоже надо убрать этот параметр (вместе с запятой)
2. Tavalik 3352 29.08.13 08:53 Сейчас в теме
Скрипт однозначно хороший, за это плюс. Я написал подобный скрипт, но столкнулся с одной проблемой, как узнать что файл действительно закачался на FTP? У вас проверка:

-- отправка на ftp через командную строку
SET @Command = 'ftp -i -n -s:"' + @DirPath + 'Script.txt" ' + @FtpServer + ':' + @FtpPort + '>> "' + @DirPath + 'Log.txt"'
EXEC @result = master..xp_cmdshell @Command


Как я понял (по крайней мере у меня так), результат будет положительным если команда ftp успешно выполнена, а не если файл закачался полностью. Вы проверяли, в ситуации когда закачка началась, но была прервана, что возвращается в результат?
3. Tavalik 3352 29.08.13 09:14 Сейчас в теме
Да, у вас такая же ошибка, даже более. Сейчас проверил. Попробуйте такой код:

DECLARE
@Command SYSNAME,
@result int

SET @Command = 'ftp.exe -v -n -s:' + '"D:\FTP\transport.txt"'
EXEC @result = master..xp_cmdshell @Command

select @result as result


Файл transport.txt сделайте заведомо неверный, например, укажите неправильный пароль к FTP. Команда все равно будет выполнена и результат будет 0. А файл на FTP так и не попал.

Пока не знаю как добавить проверку правильности загрузки. :(
4. Tavalik 3352 29.08.13 09:28 Сейчас в теме
Если интересно, вот http://tavalik.ru/index.php/sohranenie-rezervnyx-kopij-baz-dannyx-sql-na-ftp-server/ публикация моего решения, но оно натыкается на те же грабли.
5. agent00mouse 253 26.04.20 15:59 Сейчас в теме
Файлы не появляются на FTP. вернее появляются но 0 размера. через Моззилу любые файлы отправляю. куда смотреть?
плис плис.
7. user1370702 22.03.21 15:31 Сейчас в теме
(5)Решили данную проблему?
У меня скрипт работает. Бекапы во временной папке создаются. Но на фтп сервере ничего. СКУЛЬ пишет, что задание выполнено.
Ошибок и предупреждений ноль. Даже не было подключения.
6. user1370702 17.03.21 17:56 Сейчас в теме
Для того чтобы скрипт заработал снала необходимов включить "xp_cmdshell" (если по-простому - выполнение команды Windows из скрипта SQL Server из командной строки)

А если включить через SQL Management Studio?
Сервер - Аспекты - Безопасность - XPCmdShellEnabled - True
Или нужно через запрос SQL?
8. agent00mouse 253 26.03.21 11:59 Сейчас в теме
Я решил по другому.
SQL Agent - бекапит.
Cobian Backup - вывозит на соседнюю файловую помойку в папку с правами только единожды запись.
Оставьте свое сообщение