Журнал регистрации, технологический журнал и .ldf: что и как чистить на сервере 1С с MS SQL
Содержание
Почистить логи
в 1С 8.3 на SQL — значит разобраться с тремя разными файлами. Журнал регистрации сокращают в Конфигураторе: Администрирование → Журнал регистрации, кнопка «Сократить». Журнал транзакций SQL Server (файл .ldf) уменьшают командой DBCC SHRINKFILE после резервной копии журнала или перевода базы в простую модель восстановления. Технологический журнал ограничивают параметром history в logcfg.xml.
Обычно к этому приходят, когда на диске сервера остаётся пара гигабайт, а папка srvinfo или файл .ldf весят больше самой базы. Данные учёта при очистке логов не теряются: удаляется только служебная история.
Какие логи растут на сервере 1С с SQL и где они лежат
Первое, что стоит сделать, — понять, какой именно лог занял место. У каждого свой механизм очистки, и чистить «всё подряд» не нужно.
| Лог | Где лежит | Кто пишет | Чем чистить |
|---|---|---|---|
| 📒 Журнал регистрации | srvinfo\reg_1541\<GUID базы>\1Cv8Log\ | Платформа 1С | Конфигуратор, пакетный режим |
| ⚙️ Технологический журнал | Каталог из logcfg.xml | Платформа 1С | Параметр history, удаление каталогов |
| 🗄️ Журнал транзакций | Файл <база>_log.ldf в каталоге данных SQL | SQL Server | BACKUP LOG, DBCC SHRINKFILE |
| 📄 Журналы ошибок SQL | Каталог MSSQL\Log | SQL Server | Ротация через sp_cycle_errorlog |
Журнал регистрации в клиент-серверном варианте хранится не в базе SQL, а в файлах на сервере 1С. Путь по умолчанию в Windows — C:\Program Files\1cv8\srvinfo\reg_1541\. Внутри — папки с GUID информационных баз.
Чтобы найти папку нужной базы, откройте 1CV8Clst.lst в каталоге reg_1541 и найдите в нём имя базы: рядом будет её GUID.
Как быстро оценить размеры
Для журнала регистрации достаточно посмотреть размер папки 1Cv8Log. Формат файлов подскажет, как его чистить:
- 📁
1Cv8.lgd— один файл в формате SQLite (новый формат, по умолчанию в 8.3); - 📁
1Cv8.lgfи много файлов*.lgp— старый формат, каждый.lgpотвечает за свой период.
Для SQL Server откройте SQL Server Management Studio и выполните запрос:
DBCC SQLPERF(LOGSPACE);
Колонка Log Size (MB) покажет размер журнала транзакций по каждой базе, Log Space Used (%) — какая часть занята. Если файл на 40 ГБ заполнен на 2 %, место можно вернуть почти целиком.
Причина роста видна в системном представлении:
SELECT name, recovery_model_desc, log_reuse_wait_desc
FROM sys.databases
WHERE name = N'buh_base';
Сокращение журнала регистрации 1С штатными средствами
Самый безопасный способ — удалить старые записи средствами платформы. Пользователей при этом выгонять не обязательно: монопольный режим для сокращения журнала не требуется.
Через Конфигуратор
- Запустите базу в режиме Конфигуратора под пользователем с правами администратора.
- Откройте
Администрирование → Журнал регистрации. - В командной панели журнала нажмите «Сократить».
- Укажите дату: записи раньше неё будут удалены. Например, оставить последние 90 дней.
- Если записи могут понадобиться для разбора инцидентов, включите сохранение удаляемых записей в файл и укажите путь.
- Нажмите «ОК» и дождитесь окончания. На журнале в 20–30 ГБ это может занять десятки минут.
Сохранённый файл с удалёнными записями можно потом открыть в том же окне журнала регистрации через команду открытия файла. Удобно, когда аудитор просит историю за прошлый год.
Настройка уровня и разделения журнала
Сразу после очистки загляните в Администрирование → Настройка журнала регистрации в Конфигураторе. Там два важных параметра.
- 🔹 Уровень регистрации. «Регистрировать ошибки», «предупреждения», «информацию», «примечания». Для рабочей базы обычно хватает уровня с примечаниями, но если журнал раздувается за неделю — ищите, кто пишет лишнее.
- 🔹 Разделять журнал по периодам. Варианты: не разделять, по году, месяцу, дню или часу. Помесячное разделение даёт отдельный файл на каждый месяц — старые месяцы потом проще архивировать.
Полностью отключать журнал регистрации нельзя по смыслу: по нему разбирают ошибки обменов, удаление документов, вход пользователей. Снижайте объём через срок хранения, а не через отключение.
Как найти виновника роста
Откройте журнал регистрации, задайте отбор за последние сутки и сгруппируйте по событию. Типичные источники «мусора»:
- 🔁 регламентные задания, которые запускаются каждую минуту и пишут «информацию» о каждом шаге;
- 🔁 обмены данными с ошибкой, повторяющиеся по кругу;
- 🔁 внешние обработки и интеграции, которые логируют через
ЗаписьЖурналаРегистрации()каждую итерацию цикла.
Если у одного события тысячи записей в час — исправлять надо источник, иначе через месяц журнал снова будет весить столько же.
Очистка журнала транзакций SQL Server (.ldf)
Файл .ldf — главный «пожиратель» диска на серверах 1С. Причина почти всегда одна: база создана с полной моделью восстановления, а резервные копии журнала никто не делает. Модель восстановления новая база наследует от системной базы model, а в ней по умолчанию стоит полная.
Сначала выберите сценарий.
Шаг 1. Узнайте логическое имя файла журнала
USE [buh_base];
SELECT name, type_desc, size * 8 / 1024 AS size_mb
FROM sys.database_files;
Строка с type_desc = LOG — нужный файл. Логическое имя обычно вида buh_base_log.
Шаг 2а. Модель FULL: резервная копия журнала и сжатие
BACKUP LOG [buh_base]
TO DISK = N'D:\Backup\buh_base_log.trn';
USE [buh_base];
DBCC SHRINKFILE (N'buh_base_log', 1024);
Второй параметр DBCC SHRINKFILE — целевой размер в мегабайтах. 1024 МБ — разумный запас, чтобы файл не начал расти сразу после сжатия. Если с первого раза файл не уменьшился, повторите пару BACKUP LOG + SHRINKFILE: активная часть журнала могла быть в конце файла.
Шаг 2б. Модель SIMPLE: перевод и сжатие
ALTER DATABASE [buh_base] SET RECOVERY SIMPLE;
CHECKPOINT;
USE [buh_base];
DBCC SHRINKFILE (N'buh_base_log', 1024);
Сразу после перевода в SIMPLE сделайте полную резервную копию базы : старая цепочка копий журнала разорвана, и восстановиться «на момент» из неё уже нельзя.
DBCC SHRINKFILE применяйте только к файлу журнала. Сжатие файла данных (.mdf) фрагментирует индексы, и 1С после этого заметно тормозит на проведении и отчётах.
Если журнал не освобождается
Смотрите поле log_reuse_wait_desc из запроса в первом разделе.
Технологический журнал и внешние скрипты
Технологический журнал 1С
Технологический журнал включают вручную файлом logcfg.xml в каталоге conf платформы (например, C:\Program Files\1cv8\conf\). Если его включили для расследования и забыли — он может вырасти до сотен гигабайт.
Срок хранения задаёт атрибут history у элемента log — в часах:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Платформа сама удаляет каталоги старше 24 часов. Если журнал больше не нужен — удалите или переименуйте logcfg.xml, через минуту запись прекратится. После этого каталог location можно очистить вручную.
Отбор EXCP пишет только исключения. Настройку <event><ne property="name" value=""/></event> без фильтров на рабочем сервере не оставляйте дольше нескольких часов.
Удаление старых файлов журнала регистрации
При разделении журнала по периодам в папке 1Cv8Log появляется отдельный файл на каждый период. Старые файлы можно перенести в архив скриптом. Безопаснее делать это в нерабочее время и только для периодов, которые уже закрыты: текущий файл платформа держит открытым.
Пример PowerShell — архивирует файлы журнала старше 180 дней:
$log = "C:\Program Files\1cv8\srvinfo\reg_1541\<GUID базы>\1Cv8Log"
$arch = "E:\Archive\1Cv8Log"
New-Item -ItemType Directory -Force -Path $arch | Out-Null
Get-ChildItem $log -Include *.lgp,*.lgd -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-180) -and $_.Name -ne "1Cv8.lgd" } |
Move-Item -Destination $arch
Если журнал не разделён по периодам, в папке один файл 1Cv8.lgd. Удалять его вручную нельзя — пропадёт вся история. Используйте сокращение через Конфигуратор.
Обработки в режиме «Предприятие»
В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) журнал регистрации можно открыть из Администрирование → Обслуживание. Там удобно искать ошибки с отбором, но сократить журнал из пользовательского режима штатно нельзя — для этого нужен Конфигуратор или пакетный запуск.
Автоматическая очистка логов по расписанию
Регламентные задания 1С работают с данными внутри базы и для обслуживания файлов сервера не подходят. Автоматизацию собирают из трёх частей.
1. Журнал регистрации — пакетный режим Конфигуратора
У платформы есть параметр командной строки /ReduceEventLogSize. Он делает то же, что кнопка «Сократить»:
"C:\Program Files\1cv8\8.3.25.1257\bin\1cv8.exe" DESIGNER ^
/S "srv1c\buh_base" /N "Администратор" /P "пароль" ^
/ReduceEventLogSize 2026-04-01 -saveAs "E:\Archive\buh_base_log.lgd" ^
/Out "E:\Logs\reduce.log"
Дата — в формате ГГГГ-ММ-ДД, записи раньше неё удаляются. Параметр -saveAs необязательный, он сохраняет удалённое в файл. Путь к 1cv8.exe подставьте свой — номер в нём совпадает с версией установленной платформы.
Скрипт ставят в Планировщик заданий Windows раз в месяц. Пароль в bat-файле лучше заменить на отдельного пользователя 1С с правами администратора и аутентификацией операционной системы.
2. Журнал транзакций — SQL Server Agent
Для баз в модели FULL создайте план обслуживания: SQL Server Agent → Maintenance Plans, задача «Back Up Database Task» с типом «Transaction Log», расписание — каждые 30 минут. Отдельной задачей «Maintenance Cleanup Task» удаляйте файлы .trn старше 7–14 дней.
Регулярный BACKUP LOG сам освобождает место внутри .ldf. Сжимать файл по расписанию не нужно: постоянные SHRINKFILE и последующий рост только нагружают диск.
3. Технологический журнал
Хватает атрибута history в logcfg.xml. Отдельного задания не нужно.
Контроль размеров, чтобы логи не разрастались снова
После разовой очистки настройте контроль, иначе через полгода ситуация повторится.
- 📏 Начальный размер и шаг роста
.ldf. В свойствах базы в Management Studio (Files) задайте приращение в мегабайтах, например 512 МБ, а не в процентах. Рост «на 10 %» у файла в 50 ГБ означает паузу в работе при каждом расширении. - 📏 Отдельный диск под журналы SQL. Если
.ldfпереполнит диск с журналом, база встанет, но системный диск и файлы данных останутся целы. - 📏 Оповещение о свободном месте. Достаточно задания Планировщика с PowerShell, который пишет в почту или мессенджер, когда на диске меньше 15 % свободного.
- 📏 Ежемесячная проверка
DBCC SQLPERF(LOGSPACE). Если журнал заполнен на 80–90 % при модели FULL — задание бэкапа журнала не работает . - 📏 Ревизия журнала регистрации. Раз в квартал группировка по событию за неделю: так видны новые «болтливые» регламентные задания и обмены.
Если места всё равно не хватает
Бывает, что все логи почищены, а диск снова заполнен. Проверьте, что ещё растёт:
- 🗂️
tempdb. Тяжёлые отчёты 1С с временными таблицами раздувают её. Размер сбрасывается при перезапуске службы SQL Server — перезапуск обрывает все сеансы 1С, делайте его вечером после предупреждения пользователей. - 🗂️ Кэш сеансовых данных. Папки
snccntx*в каталоге базы внутриsrvinfoрастут при сбоях рабочих процессов. Чистят их только при остановленной службе «Агент сервера 1С:Предприятия», которая тоже завершает все сеансы. - 🗂️ Дампы рабочих процессов. Файлы
.mdmpв каталоге дампов платформы можно удалять, если ошибка уже разобрана. - 🗂️ Старые резервные копии. Каталог бэкапов SQL без задачи очистки съедает диск быстрее любых логов.
Для PostgreSQL логика иная: журнал предзаписи (WAL) вручную не сжимают. Его объём регулируют параметрами max_wal_size и архивированием WAL, а журнал регистрации 1С чистится так же, как описано выше.