Автоматизируем бэкап базы 1C 7.7 на SQL 2005
Расскажу как я реализовал ежедневный бэкап базы 1C 7.7 на SQL 2005, так же у меня делается бэкап файлов 1С. С 1C я начал работать совсем недавно, не буду в этой статье рассказывать какое УГ этот ваш 1С, мне не приходилось выбирать. После успешного поднятия сервера SQL 2005 и установки 1С, все работало как надо, но ведущий программист чуть ли не каждый день напоминал о необходимости постоянного бэкапирования. Страшно представить что было бы, если бы не было бэкапов.Но меня всякого рода беды обходят стороной, бэкапами я еще ни разу не воспользовался, думаю и не придется ими пользоваться. И так начнем, задача: «Каждый день сохранять базу данных 1С и файлы из папки самой программы (конфигурация, папки пользователей, печатные формы и т.д. и т.п.)».
Для начала покажу как я все это делал вручную.
Ручной бэкап базы 1C 7.7 на SQL 2005
Для выгрузки файла базы данных, я подключаюсь по RDP к своему серверу, открываю Microsoft SQL Server Management Studio, ввожу данные для подключения к серверу, жму «Connect«Открываю ветку «Databases» правой кнопкой по своей базе — «Tasks» — «Backup«В открывшемся окне вам нужно указать путь куда сохранить бэкап и тип бэкапаВо вкладке «Options» установите галочку «Verify backup when finished«Вот и все, жмем «OK» и ждем пока появиться сообщение об успешном завершении бэкапаДальше я перехожу в папку с данными 1С и полностью её архивируюПосле чего, архив и базу данных я переношу на другой сервер, где храню 30 последних копий (можно конечно и меньше хранить, но размер файлового сервера позволяет).
Все бы хорошо, но данную процедуру нужно делать каждый день. Тратиться на все про все около 5-7 минут времени, вроде и не много, но бывает забываю, а бывает и вовсе не сделаю за какой то день (слишком занят текущими задачами). Короче все это дело нужно срочно автоматизировать.
Автоматизируем бэкап базы 1C 7.7 на SQL 2005
Как то я начинал гуглитьна тему автоматизации бэкапов базы данных 1С, но ничего толком не нашел, а буквально на днях снова задался этим вопросом, и собрал по крупицам вот такой вариант.
- Написать скрипт автоматического сохранения базы данных в указанное место
- Добавить скрипт в шедулер (планировщик заданий), настроить время и дни запуска
- Проверить как все отработало
Для написания скрипта открываем блокнот и вносим туда следующую информацию
set DIR_BACKUP=D:\backup\Backup_Analit_%date%\ set DIR_ARCHIVE=\\srv-fs\backup\Backup_Analit_%date%\ set DIR_FILES=D:\shares\KrjymSQL-TEST\ set NAME_PC=srv-sql md %DIR_BACKUP% md %DIR_ARCHIVE% osql -S %NAME_PC% -E -Q "BACKUP DATABASE krjymtest TO DISK = '%DIR_BACKUP%\krjymtest.bak' with init" "c:\Program Files\7-zip\7z.exe" a %DIR_BACKUP%\DB_krjymtest_%date%.zip %DIR_BACKUP%\krjymtest.bak "c:\Program Files\7-zip\7z.exe" a %DIR_BACKUP%\FILES_krjymtest_%date%.zip %DIR_FILES%\* copy %DIR_BACKUP%\DB_krjymtest_%date%.zip %DIR_ARCHIVE%\ copy %DIR_BACKUP%\FILES_krjymtest_%date%.zip %DIR_ARCHIVE%\
Теперь подробнее:
- set DIR_BACKUP — объявление переменной содержащей путь к локальной папке куда будут сохраняться бэкапы
- set DIR_ARCHIVE — объявление переменной содержащей путь к сетевой папке где будут храниться бэкапы
- set DIR_FILES — объявление переменной содержащей путь к папке с файлами программы
- set NAME_PC — объявление переменной содержащей имя сервера
- md %DIR_BACKUP% — создаем папку на сервере, куда сохраним базу данных
- md %DIR_ARCHIVE% — создадим папку на сетевом ресурсе, где все архивы будут храниться
- «BACKUP DATABASE krjymtest TO DISK = ‘%DIR_BACKUP%\krjymtest.bak’ with init» — процедура выполнения бэкапа базы данных с именем «krjymtest» в папку на сервере и переименование этого бекапа в krjymtest.bak
- «c:\Program Files\7-zip\7z.exe» a — архивирование базы данных и папки с файлами
- copy %DIR_BACKUP% — копирование созданных архивов на сетевой ресурс
Вот в принципе и все! Сохраняем файл под именем, например, Backup-1C.bat
Теперь нужно запустить планировщик задач на сервере, и добавить в него задание на запуск бэкапа. Как это сделать смотри ниже в скриншотах