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

20.07.10

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

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

Файлы

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

Наименование Скачано Купить файл
BackupFTP.sql
.sql 9,18Kb
241 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Описание

Тема резервного копирования баз данных 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С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

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

7320 руб.

06.11.2012    79201    634    45    

93

Архивирование (backup) Инструменты администратора БД Системный администратор Программист 1С 8.3 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Абонемент ($m)

Полностью автоматизированная внешняя обработка для администрирования 1С: блокировка/разблокировка ИБ, массовое завершение сеансов, резервное копирование и восстановление из .dt, выгрузка/загрузка конфигурации (.cf), пакетная работа с расширениями (.cfe) и дополнительными обработками – всё через удобную форму без ручных запусков конфигуратора и консоли кластера

1 стартмани

21.01.2026    4531    46    war41k    0    

16

Архивирование (backup) Групповая разработка (Git, хранилище) Системный администратор Программист Бесплатно (free)

Как дать возможность каждому разработчику 1С вести разработку, тестирование и оптимизацию на собственной полноразмерной копии базы и при этом не тратить миллиарды рублей и тысячи часов на развертывание тестового окружения, а так же экономить дисковое пространство? Расскажем о том, как с помощью инструмента Database Lab получать полноразмерные копии базы 1C на СУБД PostgreSQL за считанные секунды (даже в случае использования многотерабайтных баз).

15.12.2025    8979    nasonkin    18    

29

Архивирование (backup) Учет документов Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В текущих версиях 1С пока нет функции, позволяющей автоматически отмечать возврат оригиналов документов с помощью сканера штрих-кодов. Многие контрагенты часто сталкиваются с проблемой утери оригиналов УПД или их невозврата. В ответ на эти запросы было разработано расширение, которое упрощает контроль за возвратом оригиналов документов и помогает лучше организовать их хранение.

12200 руб.

19.02.2025    2241    3    0    

3

Архивирование (backup) Системный администратор 1С 8.3 Бесплатно (free)

Предлагаю Вашему вниманию 3 скрипта на bash (sh) для архивирования (backup) типовых конфигураций на Linux средствами 1С и Postgres. Перед запуском корректно заполните раздел "Параметры" в соответствии с Вашими настройками.

20.01.2025    4087    Prelude    5    

12

Архивирование (backup) 1С:Предприятие 8 1С:Управление нашей фирмой 3.0 Платные (руб)

Расширение поможет настроить резервное копирование баз SQL в стандартный файл выгрузки баз 1С (*.dt).

2400 руб.

27.08.2024    3480    1    6    

2

HighLoad оптимизация Администрирование СУБД Архивирование (backup) Системный администратор Программист 1С:Предприятие 8 Бесплатно (free)

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер) до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя было сделать проще, как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей-то лабораторной работы? Статья адресована прежде всего специалистам 1С, избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

13.08.2024    8857    1CUnlimited    9    

6

Инструменты администратора БД Архивирование (backup) Системный администратор Программист 1С:Предприятие 8 Абонемент ($m)

Обработка для "обновления" своей тестовой базы из резервной копии рабочей базы без помощи админов.

1 стартмани

21.05.2024    4240    15    DenDev1C    4    

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