Перенос журнала регистрации 1С на новый сервер или в другую базу данных — стандартная задача для системного администратора и программиста 1С. Однако в процессе её выполнения часто возникает неприятная ошибка: «Доступ к файлу 1Cv8.lgf запрещён - 5(0x00000005): Access is denied». Эта проблема блокирует запуск информационной базы и парализует работу пользователей.
В этой статье мы подробно разберем, почему возникает данная неполадка, проанализируем популярные решения с технических форумов, выясним причины небезопасности некоторых из них и по шагам настроим корректные права доступа. Также мы рассмотрим особенности работы со старым текстовым форматом логов .lgf и современным форматом базы данных SQLite .lgd.
Ошибка с кодом 5 (0x00000005) в операционной системе Windows всегда однозначно указывает на проблему с правами доступа (NTFS Permissions). Когда мы вручную копируем файлы журнала регистрации из каталога одной базы в каталог другой (особенно если файлы переносятся между разными серверами), операционная система выполняет следующие действия:
В это же время сервер приложений «1С:Предприятие» функционирует как системная служба. По умолчанию в Windows она запускается от имени специального локального пользователя — USR1CV8 (или аналогичного, например, USR1CV83, в зависимости от версии платформы). Когда служба пытается прочитать или записать данные в перенесенный файл 1Cv8.lgf, операционная система видит, что у пользователя USR1CV8 нет прав на этот файл, и возвращает ошибку Access is denied.
На многих форумах, включая приведенный в начале статьи диалог, быстрым решением называют предоставление полного доступа (Full Control) группе «Все» (Everyone) на папку с базой данных или файлами логов. Рассмотрим подробнее, почему это решение крайне опасно:
Поэтому мы настоятельно рекомендуем использовать принцип минимальных привилегий и давать доступ только той учетной записи, которая непосредственно обеспечивает работу сервера 1С.
Перед тем как приступать к переносу логов, проанализируем, в каком формате хранится ваш журнал регистрации. Платформа 1С:Предприятие поддерживает два формата хранения:
При переносе такого журнала в файле 1Cv8.lgf обязательно требуется отредактировать уникальный идентификатор (UID) информационной базы, заменив его на актуальный UID новой базы данных, иначе связь с метаданными будет нарушена.
Важное предупреждение: Категорически запрещено копировать файл 1Cv8.lgd «на горячую» при работающей службе сервера 1С. Это гарантированно приведет к блокировкам транзакций и повреждению структуры файла логов с ошибкой database disk image is malformed. Для этого формата редактировать UID вручную внутри файла не требуется.
Проанализируем правильную и безопасную последовательность действий для переноса логов между серверными базами на MS SQL Server.
Для предотвращения блокировок файлов и повреждения индексов необходимо временно остановить службу сервера приложений. Для этого воспользуемся консолью управления службами Windows или командной строкой, запущенной от имени администратора:
net stop "1C:Enterprise 8.3 Server Agent"
Убедимся, что процессы rphost, rmngr и ragent полностью завершили свою работу в диспетчере задач.
Перейдем в каталог кластера серверов 1С. По умолчанию он располагается по пути:
C:\Program Files\1cv8\srvinfo\reg_1541\
Внутри этой директории находятся папки, названия которых соответствуют уникальным идентификаторам (UID) информационных баз в кластере. Найдем папку-источник (старая база) и папку-приемник (новая база). Внутри каждой из них находится папка 1Cv8Log.
Скопируем содержимое папки 1Cv8Log из каталога старой базы в аналогичный каталог новой базы. Если новая база уже запускалась, предварительно очистим её собственную папку 1Cv8Log, чтобы избежать конфликтов при перезаписи.
Если ваша база данных использует текстовый формат журнала регистрации, выполним следующие действия:
1Cv8.lgf с помощью любого текстового редактора (например, Блокнота).Если используется формат .lgd, пропускаем этот шаг — платформа автоматически свяжет SQLite-базу при первом старте.
Теперь решим ключевую проблему с ошибкой доступа, не подвергая систему уязвимостям. Настроим права доступа NTFS для сервисного пользователя 1С:
1Cv8Log в каталоге новой базы и выберем пункт «Свойства».USR1CV8. Если сервер 1С работает в доменной среде под сервисной доменной учетной записью, укажем её (например, DOMAIN\1c_service). Нажмем «Проверить имена» для валидации..log, .lgf или .lgd).После успешного применения прав доступа запустим службу Агента сервера 1С:
net start "1C:Enterprise 8.3 Server Agent"
Теперь запустим информационную базу в режиме «1С:Предприятие» или «Конфигуратор». Зайдем в меню «Администрирование» — «Журнал регистрации» и убедимся, что вся история успешно отображается, новые события регистрируются, а ошибка доступа больше не появляется.
Мы проанализировали проблему с правами доступа к журналу регистрации 1С при переносе базы данных на другой сервер. Быстрое решение с предоставлением прав группе «Все» является небезопасным, поэтому мы подробно разобрали корректный метод настройки прав NTFS для системной учетной записи USR1CV8. Соблюдение этой инструкции позволит вам переносить логи быстро, корректно и без рисков для информационной безопасности предприятия.