Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_LOG_TRUNCATION 1С:Предприятие и СУБД

Бэкап журнала транзакций MSSQL и правильное усечение лога (Truncation)

Обновлено: 26.08.2026 · Официальная документация ↗

Ошибки администрирования журнала транзакций вызывают остановку бизнес-процессов СУБД:

  • Ошибка The transaction log for database 'ERP_1C' is full due to 'LOG_BACKUP' (Error 9002);
  • Файл .ldf разрастается до сотен гигабайт, занимая весь свободный объем накопителя;
  • База переходит в режим Read-Only или зависает при попытке проведения документов 1С.

1. Принцип усечения журнала (Log Truncation)

Журнал транзакций состоит из виртуальных файлов журнала (VLF — Virtual Log Files). В модели восстановления FULL неактивные VLF (в которых транзакции уже зафиксированы на диске контрольной точкой Checkpoint) не освобождаются до тех пор, пока не будет выполнен бэкап журнала:

BACKUP LOG [ERP_1C]
TO DISK = N'E:\Backup\Log\ERP_1C_Log_Current.trn'
WITH COMPRESSION, CHECKSUM;

2. Анализ причин блокировки усечения лога

Если бэкап лога выполняется, но файл LDF не освобождает место внутри, выполните диагностический запрос:

SELECT name, log_reuse_wait, log_reuse_wait_desc
FROM sys.databases
WHERE name = N'ERP_1C';

Расшифровка статусов `log_reuse_wait_desc`:

  • LOG_BACKUP: Требуется выполнить BACKUP LOG (лог еще не архивирован);
  • ACTIVE_TRANSACTION: В базе есть зависшая длительная незафиксированная транзакция (например, фоновый пересчет итогов 1С);
  • REPLICATION / AVAILABILITY_GROUP: Вторичные реплики AlwaysOn или подписчики репликации отстают и не вычитали транзакции;
  • CHECKPOINT: Требуется сброс грязных страниц из RAM на диск.

3. Поиск зависших открытых транзакций

DBCC OPENTRAN ([ERP_1C]);

-- Детальный анализ сессии, удерживающей лог
SELECT 
    r.session_id,
    s.login_name,
    s.host_name,
    r.start_time,
    r.status,
    t.text AS sql_script
FROM sys.dm_exec_requests r
JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t;
💡 Практика специалистов: Главная ошибка начинающих администраторов — отключение бэкапа логов и использование бесконечного Shrink по крону. Настройте регулярный BACKUP LOG каждые 10 минут, и файл журнала перестанет неконтролируемо расти.

Частые вопросы (FAQ)

Уменьшает ли физический размер файла .ldf команда BACKUP LOG?

Нет. BACKUP LOG освобождает виртуальные лог-файлы (VLF) внутри структуры .ldf для повторной циклической перезаписи новыми транзакциями, но физический размер файла на диске не уменьшается автоматически. Для уменьшения физического размера требуется DBCC SHRINKFILE.

Как часто нужно делать бэкап журнала транзакций?

В типовых конфигурациях 1С:Предприятие рекомендуется интервал от 5 до 15 минут. Это обеспечивает минимальное окно потери данных (RPO) и удерживает размер файла LDF в компактных пределах (10-30 ГБ).

Почему нельзя переводить рабочую базу в SIMPLE ради очистки лога?

Перевод базы в модель SIMPLE мгновенно и безвозвратно разрывает цепочку LSN (Log Sequence Number). Вы потеряете возможность восстановления базы на момент времени (Point-in-Time Recovery) вплоть до следующего полного Full бэкапа.

Что делать, если log_reuse_wait_desc показывает REPLICATION, хотя репликация отключена?

Выполните сброс репликационного флага журнала: EXEC sp_repldone @xactid = NULL, @xact_seqno = NULL, @numtrans = 0, @time = 0, @reset = 1.

Полезные материалы
Рекомендуем