В процессе администрирования клиент-серверных баз 1С предприятия нередко возникает ситуация, когда настроенный в планировщике задач Windows скрипт автоматической выгрузки информационной базы внезапно перестает создавать файл выгрузки .dt. При этом в журнале регистрации фиксируется успешный вход служебной учетной записи в конфигуратор и мгновенный выход без создания записей об ошибках, а выходной лог-файл 1С остается пустым.
Разберем детально, почему возникает подобное поведение, какие скрытые ошибки содержатся в скриптах пакетного запуска и как выстроить надежный процесс резервного копирования.
Рассмотрим сценарий работы пакетного файла и выделим критические уязвимости, приводящие к сбоям:
net start службы СУБД (MS SQL Server) и сервера 1С переходят в состояние работы, однако внутренние процессы инициализации кластера и базы данных требуют дополнительного времени. Если Конфигуратор инициирует подключение в момент, когда кластер еще не готов к обработке соединений метаданных, сеанс аварийно прерывается сразу после аутентификации.1cestart.exe вместо прямого исполняемого файла. Исполняемый файл 1cestart.exe является лаунчером, который анализирует установленные версии и запускает отдельный дочерний процесс 1cv8.exe. В пакетных скриптах это может вызывать потерю дескрипторов ввода-вывода, из-за чего параметры командной строки передаются некорректно, а выходной файл лога не заполняется.%DATE% от региональных стандартов. Конструкции вида %DATE:~0,2% жестко привязаны к локали пользователя, запустившего скрипт. Если планировщик Windows запускает задание от системной учетной записи или окружения с иным форматом даты, в путях к логам и файлам архива возникают пробелы или недопустимые символы (например, слэши), что блокирует запуск команды /DumpIB./DisableStartupMessages. При возникновении проблем с получением лицензии или доступностью серверных лицензий данный ключ подавляет диалоговые окна и немедленно закрывает приложение без вывода текста ошибки в лог.Program Files (x86)) при формировании .dt для объемных баз часто приводит к исчерпанию оперативной памяти и аварийному завершению процесса.Разберем по шагам, как устранить ошибки в командном файле, если требуется выгрузка информационной базы в файл:
1cv8.exe.-NoTruncate к ключу /Out, чтобы сохранять историю выполнения.Посмотрим на пример скорректированного пакетного файла:
@echo off
setlocal
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set dt=%%I
set yyyy=%dt:~0,4%
set mm=%dt:~4,2%
set dd=%dt:~6,2%
set LogFile1C=D:\Anton\CMD\LOG\1c_%yyyy%%mm%%dd%.log
set LogFile=D:\Anton\CMD\LOG\umc_backup.log
set ArchivePath=E:\BackUp\1C\umc
set V8Path="C:\Program Files\1cv8\8.3.10.2650\bin\1cv8.exe"
echo %date% %time% --- Ожидание готовности служб --- >> %LogFile% 2>&1
timeout /t 30 /nobreak >nul
echo %date% %time% --- Запуск выгрузки информационной базы --- >> %LogFile% 2>&1
%V8Path% CONFIG /S "127.0.0.1\umc" /N "backup" /P "123" /DumpIB "%ArchivePath%\umc_%yyyy%%mm%%dd%.dt" /Out "%LogFile1C%" -NoTruncate >> %LogFile% 2>&1
echo %date% %time% --- Завершение сценария --- >> %LogFile% 2>&1
endlocal
Перезапуск служб СУБД и кластера 1С для сброса соединений является аварийным и нерекомендуемым методом. Для штатного управления подключениями и регламентными заданиями используется утилита администрирования rac совместно со службой ras.
Рассмотрим порядок блокировки базы данных через rac перед проведением регламентных процедур:
rem Установка блокировки соединений и регламентных заданий
rac session --cluster=<ClusterID> block --infobase=<IBID> --sessions-denied=on --scheduled-jobs-denied=on --permission-code=BackupSecretCode
rem Получение списка и принудительное отключение активных сеансов
rac session --cluster=<ClusterID> terminate --infobase=<IBID>
rem Запуск конфигуратора с кодом разрешения блокировки
"C:\Program Files\1cv8\8.3.10.2650\bin\1cv8.exe" CONFIG /S "127.0.0.1\umc" /N "backup" /P "123" /UC "BackupSecretCode" /DumpIB "E:\BackUp\1C\umc\backup.dt"
rem Снятие блокировки соединений после завершения выгрузки
rac session --cluster=<ClusterID> block --infobase=<IBID> --sessions-denied=off --scheduled-jobs-denied=off
Выгрузка в файл .dt представляет собой служебный механизм сериализации данных, созданный преимущественно для миграции информационных баз между различными типами СУБД (например, переход с файлового режима на SQL или между MS SQL и PostgreSQL). Использование выгрузки .dt в качестве регулярного бэкапа сопряжено с серьезными рисками:
.dt выполняет полную переиндексацию и реструктуризацию данных. Если в структуре базы или логической целостности таблиц есть скрытые ошибки, файл .dt успешно создастся, но восстановить из него рабочую базу будет невозможно.Рекомендация: Для клиент-серверного варианта работы 1С основным и обязательным средством резервного копирования является создание резервных копий средствами СУБД (MS SQL Server, PostgreSQL). Настройка планов обслуживания (Maintenance Plans) или резервного копирования журналов транзакций позволяет минимизировать простой системы и обеспечить восстановление данных на любую точку во времени (Point-in-Time Recovery).