Администрирование · 10 мин
1С и SQL: как перенаправить путь к хранению лога
Как изменить путь хранения технологического лога 1С и журнала транзакций SQL Server: настройка logcfg.xml, перенос файлов .ldf, проверка результата и типичные ошибки.
Под «логом» в связке 1С и SQL обычно понимают два разных объекта: технологический журнал сервера 1С:Предприятия (каталог с дампами и файлами событий) и журнал транзакций базы данных SQL Server (файл с расширением .ldf). Оба со временем разрастаются и нередко заполняют системный диск, поэтому задача перенаправить путь их хранения — одна из самых частых у администраторов.
Перенос выполняется штатными средствами: для технологического журнала — через конфигурационный файл logcfg.xml, для журнала транзакций — через перемещение файлов базы средствами SQL Server. Ниже разобраны оба сценария с пошаговыми действиями, проверкой результата и разбором типичных ошибок.
Перед любыми изменениями сделайте резервную копию базы данных и сохраните текущие конфигурационные файлы. Ошибка при переносе файлов базы может привести к её недоступности, а восстановление без бэкапа займёт значительно больше времени, чем сама процедура переноса.
Определяем, какой именно лог нужно перенаправить
Первый шаг — понять, какой журнал создаёт проблему. Технологический журнал 1С по умолчанию пишется в каталог вида C:\Program Files\1cv8\srvinfo\reg_1541 (папка с дампами и логами кластера) и включается только при наличии файла logcfg.xml. Журнал транзакций SQL Server — это файл .ldf, лежащий рядом с файлом данных .mdf, чаще всего в каталоге C:\Program Files\Microsoft SQL Server\...\DATA.
Признак проблемы с технологическим журналом — быстро растущая папка внутри каталога srvinfo с множеством файлов .log, .txt и дампов. Признак проблемы с журналом транзакций — файл .ldf, который занимает десятки гигабайт и продолжает расти, особенно если база работает в полной модели восстановления (FULL) без регулярного резервного копирования журнала.
Важно различать задачи «перенаправить путь» и «уменьшить размер». Если .ldf уже разросся, одного переноса мало — сначала нужно урезать журнал (перевести базу в SIMPLE и выполнить shrink либо настроить регулярный бэкап журнала при FULL), и только потом переносить файл на новый диск.
Проверьте наличие logcfg.xml и размер подкаталогов 1Cv8Log и дампов
Проверьте модель восстановления базы и расписание бэкапов журнала
Найдите крупнейшие файлы в каталогах 1С и SQL Server
Перенаправляем технологический журнал 1С через logcfg.xml
Технологический журнал управляется файлом logcfg.xml, который размещается в каталоге conf сервера 1С (обычно C:\Program Files\1cv8\<версия>\bin\conf) либо в каталоге кластера. Если файла нет — журнал по умолчанию не ведётся или ведётся с минимальными настройками, и его можно создать с нуля сразу с нужным путём.
За каталог хранения отвечает атрибут location элемента log. Укажите путь на диске с достаточным свободным местом, например на отдельном томе D: или E:. Каталог должен существовать, и у учётной записи службы агента сервера 1С (по умолчанию USR1CV8) должны быть права на запись в него.
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\1c_logs\techlog" history="24">
<event>
<eq property="name" value=""/>
</event>
<property name="all"/>
</log>
<dump create="false"/>
</config>Параметр history задаёт глубину хранения в часах — в примере журнал старше 24 часов удаляется автоматически. Это ключевая защита от переполнения диска: без ограничения глубины технологический журнал при полной записи событий способен заполнить любой том за считаные дни.
После сохранения logcfg.xml перезапустите службу «Агент сервера 1С:Предприятия» — настройки журнала подхватываются при старте. Проверьте, что в новом каталоге появились подкаталоги с именами процессов (rphost, rmngr, ragent) и внутри них начали создаваться файлы логов.
Переносим журнал транзакций SQL Server на другой диск
Перенос .ldf-файла выполняется средствами SQL Server. Самый безопасный способ для рабочей базы — перевести её в OFFLINE, переместить файл и указать новый путь. Сначала узнайте логические имена файлов базы запросом к sys.master_files или через свойства базы в SQL Server Management Studio на вкладке «Файлы».
Далее выполните последовательность: переведите базу в режим OFFLINE командой ALTER DATABASE [ИмяБазы] SET OFFLINE, физически скопируйте (лучше именно скопируйте, а не переместите) .ldf-файл в новый каталог, затем укажите SQL Server новый путь командой ALTER DATABASE [ИмяБазы] MODIFY FILE (NAME = логическое_имя_лога, FILENAME = 'E:\SQLData\ИмяБазы_log.ldf') и верните базу в работу: ALTER DATABASE [ИмяБазы] SET ONLINE.
- 1Сделайте полную резервную копию базы данных
- 2Узнайте логическое имя файла журнала через sys.master_files
- 3Переведите базу в OFFLINE
- 4Скопируйте .ldf-файл в новый каталог на целевом диске
- 5Выполните ALTER DATABASE ... MODIFY FILE с новым путём
- 6Верните базу в ONLINE и проверьте доступность из 1С
- 7Убедившись в работоспособности, удалите старую копию файла
Учётная запись службы SQL Server должна иметь полные права на новый каталог — это обязательное условие, иначе база не вернётся в ONLINE с ошибкой доступа к файлу. Права проще всего выдать через свойства папки, указав виртуальную учётную запись вида NT SERVICE\MSSQLSERVER (или с именем экземпляра).
Альтернативный вариант — отсоединение базы (Detach) с последующим присоединением (Attach) через CREATE DATABASE ... FOR ATTACH с указанием новых путей ко всем файлам. Этот способ рабочий, но при OFFLINE-подходе меньше шагов и ниже риск потерять настройки базы.
Уменьшаем журнал транзакций перед переносом
Если .ldf разросся до десятков гигабайт, переносить его в таком виде бессмысленно — сначала журнал нужно сократить. При модели восстановления SIMPLE журнал урезается командой DBCC SHRINKFILE с указанием логического имени файла журнала. При модели FULL сначала выполните резервное копирование журнала транзакций, и только после этого shrink даст эффект.
Для баз 1С, где нет требований к восстановлению на произвольный момент времени, часто рекомендуют модель SIMPLE: журнал не растёт бесконечно, а целостность обеспечивается регулярными полными бэкапами. Если используется FULL — обязательно настройте регулярное резервное копирование журнала, иначе файл будет расти снова независимо от того, на каком диске он лежит.
Проверяем результат и контролируем диск
После переноса технологического журнала убедитесь, что файлы пишутся именно в новый каталог, а старый каталог больше не пополняется. Откройте один из свежих лог-файлов — в нём должны быть актуальные записи с текущим временем.
После переноса .ldf выполните запрос к sys.master_files по базе и проверьте, что столбец physical_name для журнала указывает на новый путь. Затем запустите 1С, выполните несколько типовых операций (проведение документа, запись справочника) и убедитесь в отсутствии ошибок.
Как проверить результат
Новые файлы появляются в новом пути, старый каталог не растёт
Файлы продолжают писаться в старое место — служба не перезапущена или logcfg.xml не подхвачен
physical_name указывает на новый диск, база в состоянии ONLINE
Старый путь или база в RECOVERY_PENDING — проблема с правами или командой MODIFY FILE
Документы проводятся, ошибок в журнале регистрации нет
Ошибки доступа к базе — проверяйте права и состояние базы в SQL Server
Типичные ошибки при переносе путей логов
Самая частая ошибка с технологическим журналом — забытый перезапуск службы агента сервера: logcfg.xml лежит правильно, но журнал продолжает писаться по старым правилам. Вторая типичная ситуация — отсутствие прав у учётной записи USR1CV8 на новый каталог, из-за чего журнал молча не пишется вовсе.
При переносе .ldf главные ошибки — перемещение файла без команды MODIFY FILE (SQL Server ищет файл по старому пути и не может поднять базу) и недостаточные права на новый каталог. Обе проблемы диагностируются по сообщениям об ошибках при попытке перевести базу в ONLINE.
Частые вопросы
Можно ли изменить путь технологического журнала без перезапуска сервера 1С?
Нет, надёжного способа нет: настройки logcfg.xml считываются процессами кластера при старте. Перезапуск службы агента сервера обязателен, поэтому планируйте операцию на время, когда пользователи могут быть кратковременно отключены.
Куда лучше переносить журнал транзакций — на тот же диск, что и данные, или отдельно?
Классическая рекомендация — разносить данные и журнал на разные физические диски, чтобы снизить конкуренцию за операции ввода-вывода. На современных SSD и RAID-массивах выигрыш менее заметен, но размещение журнала вне системного диска остаётся обязательным минимумом.
База перешла в состояние RECOVERY_PENDING после переноса .ldf. Что делать?
Чаще всего причина — отсутствие прав у службы SQL Server на новый каталог или неверно указанный путь в MODIFY FILE. Проверьте путь через sys.master_files, выдайте права учётной записи службы на папку и повторно выполните SET ONLINE. Если файл повреждён — восстанавливайте базу из резервной копии.
Можно ли просто удалить разросшийся .ldf-файл?
Нет, удалять файл журнала вручную нельзя: без него база не откроется штатно. Правильный путь — сокращение журнала через DBCC SHRINKFILE после резервного копирования (при FULL) или после перевода базы в модель SIMPLE.
Где по умолчанию лежит технологический журнал, если logcfg.xml нет?
Без logcfg.xml полноценный технологический журнал обычно не ведётся; в каталоге кластера srvinfo могут накапливаться только служебные данные и дампы аварийных завершений. Чтобы управлять логированием осознанно, создайте logcfg.xml с явным путём и ограничением глубины хранения.
Что важно запомнить
Технологический журнал 1С перенаправляется через параметр location в logcfg.xml с перезапуском службы агента, журнал транзакций SQL Server — через OFFLINE, копирование .ldf и MODIFY FILE. В обоих случаях критичны права на новый каталог и резервная копия перед началом работ, а контроль роста логов важнее самого переноса.