Автоматизируем бэкап базы 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С, но ничего толком не нашел, а буквально на днях снова задался этим вопросом, и собрал по крупицам вот такой вариант.

  1. Написать скрипт автоматического сохранения базы данных в указанное место
  2. Добавить скрипт в шедулер (планировщик заданий), настроить время и дни запуска
  3. Проверить как все отработало

Для написания скрипта открываем блокнот и вносим туда следующую информацию

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%\

Теперь подробнее:

Вот в принципе и все! Сохраняем файл под именем, например, Backup-1C.bat

Теперь нужно запустить планировщик задач на сервере, и добавить в него задание на запуск бэкапа. Как это сделать смотри ниже в скриншотах

Стоит помнить! Важно не только своевременно делать бэкапы базы данных и файлов программы, но и периодически проверять эти бэкапы на работоспособность. Я планирую проверять их раз в неделю.