Резервное копирование файловой базы 1C Предприятие

План таков:

  • Завершить все COM—сессии к терминальному серверу, если этого не сделать, что в файлах журнала скрипта будет вот такая вот ошибка и скрипт не отработает:

Ошибка исключительной блокировки информационной базы.

Активны сеансы:

компьютер: PC2-K, пользователь: Иванов Иван, сеанс: 828, начат: 31.05.2016 в 19:55:16, приложение: COM-соединение

Команда Net session показывает кто обратился к файловой базе без подключения к терминальному серверу, т. е. COM-соединение.

  • Завершить все RDP—сессии к терминальному серверу.
  • Заполучить у программиста  административные учетные данные для возможности формирования выгрузки информационной базы.

Итого скрипт для осуществления резервного копирования файловой базы 1С 8.2следующий:

echo off

setlocal

rem Убиваю процесс 1cv8.exe

taskkill /F /IM 1cv8s.exe /T

taskkill /F /IM 1cv8.exe /T

rem убиваю лог от предыдущего запуска скрипта

del C:\BackupBD\backup1.log

echo "закрываем принудительно все соединения с сервером"

net session /delete /y

rem закрываем конкретное соединение с сервером

rem net sessions \\IP /DELETE /Y

rem logoff TS session ALL

rem Останавливаю службу терминального сервера

net stop termservice /y

rem Получаю список всех терминальный сессии после исполнения предшествующей команды переведенных в статус Disconnected

query session >session.txt

for /f "skip=2 tokens=2,3,4" %%i in (session.txt) DO if '%%j' == 'Disc' logoff %%i

del session.txt

rem Формирую переменную с полным именованием текущей даты и времени

set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%

rem Подключаюсь в 1с в режиме конфигуратора к необходимой базе

rem "Делаю выгрузку базы данных в специальный формат с расширением dt"

"C:\Program Files (x86)\1cv82\8.2.19.80\bin\1cv8.exe" DESIGNER /fc:<путь_до_файловой_базы> /N <административная_учетная_запись> /P <пароль_от_административной_учетной_записи> /DisableStartupMessage /DumpIB "C:\BackupBD\<файловая_база>_%datetimef%.dt" /OUT "C:\BackupBD\backup1.log" -NoTruncate

echo %datetimef% >> c:\backupbd\backup1.log

rem Запускаю службу терминального сервера

net start termservice /y

rem Выхожу из скрипта

endlocal

На заметку: Административная учетная запись в  не должна в именовании содержать пробелы, к примеру как у меня было: Ollo A, т. к. я не смог экранировать символ пробела кавычками, а потому лучше будет переименовать в aollo.

На заметку: В один момент времени может быть запущен только один скрипт, а это значит что если Вам нужно бекапировать несколько файловых баз, то следует создать несколько заданий и опытным путем определить время в течении которого каждая база бекапируется, а же потом с учетом этого промежутка времени и запаса (к примеру+20%) заложить на непредвиденные ситуации.

Формат полученного файла бекапа: BazaAlfa_2016_06_21_6_35_10.dt

Ну а далее настраиваю через планировщик заданий на своем терминальном сервере (в моем случая я использую проверенную ось: Windows  Enterpise) задание на запуск данного скрипта в то время которое необходимо мне, останавливаться на том как создать задание я не буду это просто да и к тому же я уже писал об этом на своем блоге. По итогу могу сказать следующее: вот такое вот задание у меня лично отрабатывает на «Ура», в планах прикрутить к скрипту возможность уведомления на почту о статусе завершения, работы, ошибках, а вообще уже давно пора переходить с моей стороны на более продвинутые возможности использования командных файлов, а именно PowerShell. Об этом я тоже как нибудь поведу читателям своего блога. На этом я прощаюсь и до новых встреч, с уважением автор блога —ekzorchik.

Источник: http://www.ekzorchik.ru/2016/06/backup-file-base-1c/

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Яндекс.Метрика Рейтинг@Mail.ru Resurs.kz: сайты Казахстана и раскрутка сайта

Thanks: Studenthelp78