Рассмотрим неприятную, но частую ситуацию: сервер, на котором работает 1С, внезапно перезагрузился в процессе создания резервной копии. Если для бэкапа используется программа вроде Effector Saver, которая блокирует базу на время выгрузки, то после сбоя база так и останется заблокированной, и пользователи не смогут в нее войти. Разберем, как решить эту проблему раз и навсегда, настроив автоматическое снятие блокировок.
Это прямое решение проблемы, которое поможет быстро вернуть базу в рабочее состояние после сбоя. Идея проста: создадим скрипт, который будет запускаться при каждой загрузке сервера и отправлять базе 1С команду на снятие блокировки.
Разберем по шагам:
"%ProgramFiles%\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\ПутьКВашейБазе" /CРазрешитьРаботуПользователей /UCКодРазрешения
Проанализируем эту команду:
"%ProgramFiles%\1cv8\common\1cestart.exe" ENTERPRISE — запуск платформы 1С в режиме предприятия./F"D:\ПутьКВашейБазе" — ключ для файловой базы. Если у вас клиент-серверный вариант, используйте ключ /S"ИмяСервера\ИмяБазы"./CРазрешитьРаботуПользователей — специальный параметр, который дает команду на снятие блокировки. После его выполнения приложение 1С автоматически закроется./UCКодРазрешения — здесь указывается код, которым была установлена блокировка.РезервноеКопирование. Попробуйте подставить его.1Cv8.cdn, который лежит в каталоге с информационной базой. Откройте его текстовым редактором и найдите параметр /UC..bat (например, unlock_1C.bat). Чтобы он запускался автоматически при старте Windows, вы можете:
.bat-файл.Теперь, даже если сервер перезагрузится аварийно, при следующей загрузке этот скрипт автоматически снимет блокировку, и пользователи смогут продолжить работу без вашего вмешательства (также существует решение на снятие блокировок у БД на сервере под Linux).
Скрипт — это хорошее "лекарство", но лучше устранить саму "болезнь". Проблема блокировки возникает из-за того, что для создания резервной копии используется выгрузка в файл .dt. Этот метод требует монопольного доступа к базе, чтобы гарантировать целостность данных. Для работающих серверных баз это не лучший подход.
Гораздо более правильная и надежная практика — использовать встроенные средства СУБД.
Используйте Планы обслуживания (Maintenance Plans) или готовые скрипты для автоматизации архивации и сжатия. Это штатные и наиболее надежные инструменты для администрирования баз MS SQL.
Для разблокировки базы напрямую через SQL можно использовать команды SET SINGLE_USER для перевода в монопольный режим и SET MULTI_USER для возврата в многопользовательский, но при правильной настройке бэкапов это не понадобится.
Используйте встроенную утилиту pg_dump. Ее работа легко автоматизируется через скрипты (.bat в Windows или .sh в Linux), которые запускаются по расписанию системным планировщиком.
pg_dump создает согласованную копию базы данных на момент начала своей работы, не блокируя при этом работу пользователей на чтение и запись.В заключение: создание стартового скрипта является эффективным решением "на скорую руку". Однако для долгосрочной стабильности и надежности настоятельно рекомендуем перейти на использование встроенных средств СУБД для резервного копирования. Это профессиональный подход, который исключает саму причину возникновения подобных блокировок.