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

20.07.10

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
BackupFTP.sql
.sql 9,18Kb
239
239 Скачать (1 SM) Купить за 1 850 руб.

Описание

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

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

См. также

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

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    72817    627    45    

85

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

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

1200 руб.

03.09.2014    15714    21    6    

27

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

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

04.12.2023    9472    n_mezentsev    15    

27

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

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

07.10.2022    28730    sapervodichka    37    

147

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

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

1 стартмани

25.08.2022    5741    3    Gnom-Gluck    6    

7

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

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

1 стартмани

02.06.2022    4696    3    Giblarium    12    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. luns 01.10.10 12:36 Сейчас в теме
хорошая статья.
правда COMPRESSION не работает в standart версии, поэтому в ней тоже надо убрать этот параметр (вместе с запятой)
2. Tavalik 3409 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 3409 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 3409 29.08.13 09:28 Сейчас в теме
Если интересно, вот http://tavalik.ru/index.php/sohranenie-rezervnyx-kopij-baz-dannyx-sql-na-ftp-server/ публикация моего решения, но оно натыкается на те же грабли.
5. agent00mouse 256 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 256 26.03.21 11:59 Сейчас в теме
Я решил по другому.
SQL Agent - бекапит.
Cobian Backup - вывозит на соседнюю файловую помойку в папку с правами только единожды запись.
Оставьте свое сообщение