Как автоматически снять блокировку с базы 1С после сбоя сервера во время бэкапа?

Системный администратор IT и автоматизация бизнеса
← На главную

Рассмотрим неприятную, но частую ситуацию: сервер, на котором работает 1С, внезапно перезагрузился в процессе создания резервной копии. Если для бэкапа используется программа вроде Effector Saver, которая блокирует базу на время выгрузки, то после сбоя база так и останется заблокированной, и пользователи не смогут в нее войти. Разберем, как решить эту проблему раз и навсегда, настроив автоматическое снятие блокировок.

Решение 1: Создание скрипта для автоматической разблокировки при старте сервера

Это прямое решение проблемы, которое поможет быстро вернуть базу в рабочее состояние после сбоя. Идея проста: создадим скрипт, который будет запускаться при каждой загрузке сервера и отправлять базе 1С команду на снятие блокировки.

Разберем по шагам:

  1. Создаем пакетный файл. Используя возможности командной строки Windows, откройте любой текстовый редактор (например, "Блокнот") и создайте новый файл.
  2. Пишем команду для разблокировки. Вставьте в файл следующую строку. Обратите внимание, что вам нужно будет изменить путь к базе и, возможно, код разрешения.
    
    "%ProgramFiles%\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\ПутьКВашейБазе" /CРазрешитьРаботуПользователей /UCКодРазрешения
    

    Проанализируем эту команду:

    • "%ProgramFiles%\1cv8\common\1cestart.exe" ENTERPRISE — запуск платформы 1С в режиме предприятия.
    • /F"D:\ПутьКВашейБазе" — ключ для файловой базы. Если у вас клиент-серверный вариант, используйте ключ /S"ИмяСервера\ИмяБазы".
    • /CРазрешитьРаботуПользователей — специальный параметр, который дает команду на снятие блокировки. После его выполнения приложение 1С автоматически закроется.
    • /UCКодРазрешения — здесь указывается код, которым была установлена блокировка.
  3. Находим код разрешения. Блокировка входа пользователей требует указания специального ключа. Где его взять?
    • В настройках Effector Saver: Откройте настройки задачи резервного копирования. Для клиент-серверных баз поле "Код разрешения" является обязательным, и вы найдете его там.
    • Стандартный код: Часто программы резервного копирования используют стандартный код, например, РезервноеКопирование. Попробуйте подставить его.
    • Для файловой базы: Код можно найти в файле 1Cv8.cdn, который лежит в каталоге с информационной базой. Откройте его текстовым редактором и найдите параметр /UC.
  4. Сохраняем и настраиваем автозапуск. Сохраните ваш текстовый файл с расширением .bat (например, unlock_1C.bat). Чтобы он запускался автоматически при старте Windows, вы можете:
    • Поместить ярлык этого файла в папку "Автозагрузка" меню "Пуск".
    • Создать задачу в "Планировщике заданий" Windows с триггером "При запуске системы", которая будет выполнять ваш .bat-файл.

Теперь, даже если сервер перезагрузится аварийно, при следующей загрузке этот скрипт автоматически снимет блокировку, и пользователи смогут продолжить работу без вашего вмешательства (также существует решение на снятие блокировок у БД на сервере под Linux).

Решение 2: Переход на надежные методы резервного копирования (рекомендуется)

Скрипт — это хорошее "лекарство", но лучше устранить саму "болезнь". Проблема блокировки возникает из-за того, что для создания резервной копии используется выгрузка в файл .dt. Этот метод требует монопольного доступа к базе, чтобы гарантировать целостность данных. Для работающих серверных баз это не лучший подход.

Гораздо более правильная и надежная практика — использовать встроенные средства СУБД.

Для Microsoft SQL Server

Используйте Планы обслуживания (Maintenance Plans) или готовые скрипты для автоматизации архивации и сжатия. Это штатные и наиболее надежные инструменты для администрирования баз MS SQL.

Для разблокировки базы напрямую через SQL можно использовать команды SET SINGLE_USER для перевода в монопольный режим и SET MULTI_USER для возврата в многопользовательский, но при правильной настройке бэкапов это не понадобится.

Для PostgreSQL

Используйте встроенную утилиту pg_dump. Ее работа легко автоматизируется через скрипты (.bat в Windows или .sh в Linux), которые запускаются по расписанию системным планировщиком.

В заключение: создание стартового скрипта является эффективным решением "на скорую руку". Однако для долгосрочной стабильности и надежности настоятельно рекомендуем перейти на использование встроенных средств СУБД для резервного копирования. Это профессиональный подход, который исключает саму причину возникновения подобных блокировок.

← На главную