При настройке автоматического резервного копирования информационных баз 1С (в частности, крупных конфигураций, таких как УПП) системные администраторы нередко сталкиваются со сбоем выполнения задачи и сообщением: «Ошибка исключительной блокировки информационной базы. Активные сеансы и соединения...». Проанализируем природу этой ошибки, выясним, почему традиционная выгрузка данных в файл .dt не подходит для регулярных бэкапов клиент-серверных баз, и разберем правильные методы организации резервного копирования.
Рассмотрим, что происходит в момент запуска задачи резервного копирования средствами утилит вроде Effector Saver или скриптов пакетного запуска Конфигуратора с параметром /DumpIB. Для формирования файла выгрузки информационной базы платформе 1С:Предприятие требуется монопольный доступ. Если в момент старта задачи в базе присутствует хотя бы один активный сеанс (пользователь в режиме предприятия, фоновое задание или сеанс конфигуратора), операция аварийно завершается ошибкой блокировки.
Штатные механизмы завершения работы пользователей далеко не всегда могут корректно освободить базу:
Конфигуратор также игнорируют команды штатного завершения.comcntr.dll либо настроенная служба администрирования RAS. При установке блокировки соединений необходимо передавать ключ разрешения запуска /UC <КодРазрешения>, иначе сам процесс выгрузки не сможет подключиться к заблокированной базе.Разберем фундаментальные технические ограничения формата .dt, из-за которых разработчики платформы не рекомендуют применять его для планового резервного копирования, особенно для клиент-серверных баз (SQL):
Out of memory). Также возможны сбои при обработке отдельных таблиц размером более 4 ГБ..dt может завершиться успешно, но восстановить базу обратно из полученного файла будет невозможно. Нативный бэкап СУБД в этом сценарии гарантирует целостность структуры.Для баз, работающих в клиент-серверном режиме под управлением MS SQL Server, единственно верным решением является резервное копирование средствами самой СУБД. Главное преимущество этого способа: пользователей выгонять из базы не требуется вообще. Процесс создания бэкапа не блокирует работу сотрудников, даже если они в этот момент проводят документы или открыли конфигуратор.
Разберем по шагам типовой порядок действий в среде SQL Server Management Studio (SSMS):
Full Backup) базы данных ночью, а в течение рабочего дня запланируем периодическое создание разностных бэкапов (Differential Backup) и архивацию журналов транзакций (Transaction Log) каждые 15–30 минут (для модели восстановления Full).Maintenance Cleanup Task), чтобы предотвратить переполнение дискового пространства.Если резервное копирование настраивается через специализированные программы (например, тот же Effector Saver), в них следует изменить вид задачи: вместо «Архивирование средствами 1С:Предприятие 8» необходимо выбрать «Архивирование средствами СУБД / MS SQL». В этом случае утилита отправляет нативные команды создания резервной копии напрямую в SQL Server без требования монопольного доступа к 1С.
Если по организационным причинам временно требуется выгрузить базу именно средствами платформы, но сеансы остаются заблокированными из-за зависших «сеансов-призраков», выполним принудительную очистку сеансовых контекстов кластера 1С.
Выполним процедуру безопасной очистки кэша сеансов сервера:
services.msc) и остановим службу агента сервера: 1C:Enterprise 8.3 Server Agent (служба ragent).C:\Program Files\1cv8\srvinfo).snccntx.1cv8wsrv.lst и 1CV8Reg.lst, так как это приведет к потере настроек кластера и списка зарегистрированных информационных баз.Для предотвращения подобных ситуаций в будущем настроим параметры информационной базы в консоли администрирования кластера серверов 1С. Зададим свойства «Время засыпания пассивных сеансов» (например, 1200 секунд) и «Время завершения спящих сеансов» (например, 3600 секунд). В этом случае кластер 1С будет в автоматическом режиме удалять неактивные клиентские подключения в нерабочее время без участия администратора.