К статье
Практический материал

Администрирование · 12 мин

Как почистить логи 1С в SQL Server

Как безопасно почистить логи 1С в SQL Server: сжатие журнала транзакций, модели восстановления, очистка журнала регистрации и профилактика переполнения диска.

База 1С на SQL Server растёт не только за счёт данных документов. Журнал транзакций (файл .ldf) при полной модели восстановления может раздуваться до десятков и сотен гигабайт, а журнал регистрации 1С копит миллионы записей о действиях пользователей. Когда диск заполняется, сервер 1С начинает тормозить, а в худшем случае база останавливается с ошибкой нехватки места.

Чистка логов — штатная задача администратора, но выполнять её нужно в правильном порядке: сначала понять, какой именно лог разросся и почему, затем выбрать безопасный способ сокращения. Простое удаление файла журнала транзакций или грубое сжатие без бэкапа может привести к потере данных или невозможности восстановить базу на нужный момент времени.

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

Какие логи есть у 1С на SQL Server и почему они растут

Под «логами 1С» обычно понимают три разных сущности, и путать их нельзя — чистятся они по-разному. Первая — журнал транзакций SQL Server (файл .ldf), в который записываются все изменения данных. Вторая — журнал регистрации 1С, внутренний механизм платформы, фиксирующий входы пользователей, проведение документов и ошибки. Третья — технологический журнал и логи кластера серверов 1С, которые пишутся в файлы на диске сервера приложений.

Чаще всего проблему создаёт именно журнал транзакций. Если база работает в полной модели восстановления (Full), журнал очищается только после резервного копирования журнала. Если бэкапы лога не настроены — а это типичная ситуация, когда базу развернули «по умолчанию» — файл .ldf растёт бесконечно, даже если самих данных немного.

Журнал регистрации 1С растёт медленнее, но в крупных базах с сотнями пользователей за несколько лет накапливает гигабайты записей. Технологический журнал, если его включили для диагностики и забыли выключить, способен заполнить диск за считанные дни.

Файл .ldf намного больше .mdfРаздут журнал транзакций

Проверьте модель восстановления базы и расписание бэкапов журнала

Место кончается на диске сервера 1СТехнологический журнал или дампы

Проверьте каталоги srvinfo, reg_1541 и настройки logcfg.xml

Медленно открывается журнал регистрацииПереполнен журнал регистрации 1С

Проверьте размер каталога журнала регистрации внутри папки базы

Диагностика: определяем, что именно заняло место

Прежде чем что-то чистить, выясните размеры файлов базы. В SQL Server Management Studio (SSMS) это делается через свойства базы данных на вкладке Files, либо запросом к системным представлениям. Обратите внимание на соотношение размеров .mdf (данные) и .ldf (журнал): если журнал сопоставим с данными или больше — это и есть источник проблемы.

Дополнительно проверьте модель восстановления: правый клик по базе → Properties → Options → Recovery model. Значение Full без регулярных бэкапов журнала — гарантированный рост .ldf. Также полезно выполнить запрос DBCC SQLPERF(LOGSPACE), который покажет размер и процент использования журнала по всем базам.

sql
DBCC SQLPERF(LOGSPACE);
GO
SELECT name, recovery_model_desc FROM sys.databases WHERE name = 'MyBase1C';

Для журнала регистрации 1С оцените размер каталога 1Cv8Log внутри папки информационной базы (в клиент-серверном варианте — в каталоге базы на сервере 1С, а не на SQL-сервере). Если папка весит гигабайты, а отборы в журнале регистрации работают медленно — пора сокращать.

Чистка журнала транзакций SQL Server

Главное правило: журнал транзакций нельзя просто удалить как файл. Он очищается штатными средствами — сначала освобождается место внутри журнала (усечение), затем при необходимости сжимается сам файл. Пропуск первого шага — самая частая причина, почему «shrink не работает».

Вариант 1: перевод в простую модель восстановления

Если вам не требуется восстановление базы на произвольный момент времени (для большинства баз 1С достаточно ежедневного полного бэкапа), самый простой путь — переключить базу в модель Simple. В этой модели SQL Server автоматически усекает журнал после контрольных точек.

Порядок действий
  1. 1
    Сделайте полную резервную копию базы средствами SQL Server
  2. 2
    В SSMS: правый клик по базе → Properties → Options → Recovery model → Simple → OK
  3. 3
    Правый клик по базе → Tasks → Shrink → Files → выберите тип файла Log
  4. 4
    Укажите целевой размер (например, 1024 МБ) и подтвердите сжатие
  5. 5
    Проверьте размер файла .ldf на диске и свободное место

Вариант 2: сжатие без смены модели восстановления

Если полная модель нужна (например, требуется восстановление на момент времени или настроена репликация), сначала выполните резервное копирование журнала транзакций, и только потом сжимайте файл. Без бэкапа журнала усечение не произойдёт, и shrink вернёт файл практически без изменений.

sql
BACKUP LOG [MyBase1C] TO DISK = 'D:\Backup\MyBase1C_log.trn';
GO
USE [MyBase1C];
DBCC SHRINKFILE (N'MyBase1C_log', 1024);
GO

Учтите, что сжатие журнала — разовая мера. Если причина роста не устранена, файл раздуется снова. Поэтому после сжатия обязательно настройте либо регулярные бэкапы журнала (для Full), либо простую модель восстановления.

Выбор модели восстановления для баз 1С

Модель восстановления определяет, как ведётся журнал транзакций и какие варианты восстановления доступны. Для типовых баз 1С выбор обычно сводится к двум вариантам.

ПараметрSimple (простая)Full (полная)
Рост журналаОграничен, усекается автоматическиРастёт без бэкапов журнала
ВосстановлениеНа момент последнего бэкапаНа произвольный момент времени
Требования к обслуживаниюМинимальныеНужны регулярные бэкапы журнала
Кому подходитБольшинству баз 1СКритичным базам с жёсткими требованиями к потере данных

На практике для большинства организаций разумный компромисс — модель Simple плюс ежедневный полный бэкап и, при необходимости, разностные копии в течение дня. Потеря данных ограничивается интервалом между копиями, а журнал не требует отдельного обслуживания.

Маршрут решения

Как выбрать действие

Бэкапы журнала не настроены и не нужныПереведите базу в Simple и сожмите журнал один раз
Требуется восстановление на момент времениОставьте Full, настройте регулярный BACKUP LOG, затем сожмите файл
Журнал вырос из-за одной массовой операции (загрузка, свёртка)Дождитесь завершения, сделайте бэкап журнала и выполните shrink до разумного размера

Очистка журнала регистрации 1С

Журнал регистрации не лежит в SQL-базе как обычная таблица — платформа хранит его в отдельных файлах. Чистить его запросами к SQL Server нельзя: это нарушит целостность. Используйте штатный механизм сокращения.

Откройте конфигуратор, перейдите в меню «Администрирование» → «Настройка журнала регистрации». Там же доступна кнопка «Сократить»: укажите дату, старше которой события нужно удалить, и подтвердите операцию. Платформа создаст новый файл журнала без старых записей, а старый можно будет удалить или архивировать.

Полезные меры на будущее: ограничьте состав регистрируемых событий (не нужно писать все информационные сообщения, если достаточно ошибок и действий с данными), а также настройте разделение журнала по периодам — по дням или месяцам. Тогда старые фрагменты можно удалять файлами, не запуская сокращение всего журнала.

Технологический журнал и логи кластера 1С

Технологический журнал включается файлом logcfg.xml в каталоге conf сервера 1С и предназначен для диагностики. Если его включили для расследования проблемы и не выключили, он будет писать гигабайты дампов и событий. Проверьте наличие logcfg.xml: если диагностика завершена, удалите или переименуйте файл и перезапустите агент сервера.

Служебные файлы кластера (каталог srvinfo, подкаталоги reg_1541 и подобные) содержат журналы регистрации кластера и списки сеансов. Их старые файлы можно удалять вручную при остановленном агенте сервера 1С, но делать это стоит аккуратно и только для заведомо устаревших данных.

Частая ситуация: администратор сжимает журнал транзакций до минимума, а через неделю тот снова вырастает до прежнего размера. Это нормально, если объём обусловлен реальной нагрузкой — например, ночной перепроводкой документов. В таком случае не сжимайте файл до предела: оставьте запас под пиковую нагрузку, чтобы SQL Server не тратил ресурсы на постоянное авторасширение.
ПЗ
Практическое замечание

Профилактика: как не допустить повторного переполнения

Разовая чистка решает симптом, но не причину. Чтобы логи не разрастались снова, настройте регулярное обслуживание. Для SQL Server это план обслуживания (Maintenance Plan) или задания агента SQL Server: полный бэкап ежедневно, бэкапы журнала каждые 15–60 минут при модели Full, контроль свободного места на дисках.

Для журнала регистрации 1С назначьте периодическое сокращение — например, раз в квартал удалять события старше года, если нет требований хранить их дольше. Для технологического журнала заведите правило: включать только на время диагностики и сразу выключать после.

Типичные ошибки
01
Удаление файла .ldf через проводник — база может перейти в состояние Suspect и потребовать восстановления
02
Сжатие журнала в модели Full без бэкапа журнала — shrink не освобождает место, администратор считает операцию сломанной
03
Сжатие данных (mdf) вместо журнала — рост фрагментации индексов и падение производительности без реальной необходимости
04
Очистка журнала регистрации запросами к SQL — повреждение внутренней структуры журнала 1С
05
Отсутствие бэкапа перед любыми операциями с файлами базы — невозможность отката при ошибке
Контрольные точки

Как проверить результат

Размер файла .ldf на диске
Норма

Уменьшился до заданного значения и не растёт без нагрузки

Тревожный признак

Размер прежний — усечение не произошло, проверьте модель восстановления и бэкапы журнала

Свободное место на диске
Норма

Появился запас, достаточный для роста базы и бэкапов

Тревожный признак

Место снова исчезает — ищите другой источник роста (техжурнал, дампы, tempdb)

Работа пользователей в 1С
Норма

База доступна, документы проводятся без ошибок

Тревожный признак

Ошибки доступа к базе — проверьте состояние базы в SSMS и журнал ошибок SQL Server

Частые вопросы

Можно ли просто удалить файл журнала транзакций .ldf?

Нет. SQL Server не сможет корректно запустить базу без её журнала, и база перейдёт в состояние Suspect или Recovery Pending. Журнал очищается только штатными средствами: усечением через модель восстановления или бэкап журнала с последующим сжатием файла.

Почему сжатие журнала (shrink) не уменьшает файл?

Потому что активная часть журнала ещё не усечена. В модели Full сначала выполните BACKUP LOG, в Simple — убедитесь, что нет долгих открытых транзакций. Также помогает повторить сжатие дважды: после первого сжатия активная часть может переместиться в конец файла.

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

Для большинства организаций достаточно простой модели (Simple) с ежедневным полным бэкапом — журнал тогда обслуживает себя сам. Полная модель оправдана, только если требуется восстановление на произвольный момент времени и вы готовы настраивать регулярные бэкапы журнала.

Как очистить журнал регистрации 1С без конфигуратора?

Если журнал хранится в старом формате с разделением по периодам, можно удалить файлы устаревших периодов вручную из каталога журнала при остановленной базе. Для журнала в новом формате безопасный способ один — штатное сокращение через конфигуратор или аналогичную операцию через средства администрирования кластера.

Опасно ли сжимать журнал транзакций для работы базы?

Сама операция безопасна при наличии актуальной резервной копии, но она ресурсоёмкая и фрагментирует файл журнала. Выполняйте сжатие в нерабочее время и не делайте его регулярной практикой: если журнал постоянно вырастает до большого размера, правильнее оставить ему нужный объём и устранить причину роста.

Что делать, если диск заполнен полностью и база остановилась?

Освободите минимум места вне базы: удалите старые бэкапы, временные файлы, дампы технологического журнала. Затем запустите SQL Server, переключите базу в Simple (если допустимо) и сожмите журнал. Не пытайтесь удалить .ldf — при полном диске это почти гарантированно приведёт к повреждению базы.

Итог

Что важно запомнить

Перед любой чисткой делайте полную резервную копию. Журнал транзакций очищается усечением и сжатием, а не удалением файла; причину роста устраняйте выбором правильной модели восстановления. Журнал регистрации 1С сокращайте только штатными средствами конфигуратора, а технологический журнал выключайте после диагностики.