Лог транзакций (.ldf) MS SQL переполнен: как правильно урезать (Shrink) базу 1С
- На диске сервера полностью закончилось свободное место (0 байт).
- В 1С при проведении документов выскакивает ошибка: «The transaction log for database '1c_base' is full due to 'LOG_BACKUP'».
- Файл базы данных
.mdfвесит 20 ГБ, а файл журнала транзакций.ldfраздулся до 300–500 ГБ.
Почему разрастается файл .ldf простыми словами?
По умолчанию в MS SQL Server включена Полная модель восстановления (Full Recovery Model). В этом режиме сервер протоколирует абсолютно каждое изменение каждой строки базы в файл журнала .ldf и никогда не удаляет их сам, ожидая, пока администратор выполнит специальный бэкап лога транзакций. Если такие бэкапы не настроены, файл лога забивает весь жесткий диск.
Пошаговое решение: Быстрое сжатие лога транзакций
- Запустите программу SQL Server Management Studio (SSMS) и подключитесь к серверу.
- Нажмите кнопку «Создать запрос» (New Query) на верхней панели.
- Скопируйте и выполните следующий SQL-скрипт (замените
1C_BASE_NAMEна реальное имя вашей базы):-- 1. Переключаем модель восстановления на Простую (Simple) ALTER DATABASE [1C_BASE_NAME] SET RECOVERY SIMPLE; GO -- 2. Узнаем точное логическое имя файла журнала -- (по умолчанию обычно имя базы с суффиксом _log) USE [1C_BASE_NAME]; GO -- 3. Сжимаем файл журнала до разумных 500 Мегабайт DBCC SHRINKFILE (N'1C_BASE_NAME_log' , 500); GO -- 4. (Опционально) Возвращаем модель обратно в Full, если делаете бэкапы логов: -- ALTER DATABASE [1C_BASE_NAME] SET RECOVERY FULL; -- GO - Нажмите клавишу F5 (или кнопку Execute / Выполнить).
- Файл
.ldfмгновенно сожмется, и на диске моментально освободятся сотни гигабайт.
Частые вопросы (FAQ)
В чем разница между моделями восстановления Simple и Full?
В режиме Simple (Простая) SQL Server автоматически очищает завершенные транзакции из файла лога, и он не растет бесконечно. В режиме Full (Полная) лог копится непрерывно для возможности восстановления базы 'на любую секунду времени' (Point-in-time recovery).
Безопасно ли оставлять базу 1С в режиме восстановления Simple насовсем?
Для 90% типовых баз 1С малого и среднего бизнеса режим Simple является абсолютно нормальным и рекомендованным стандартом, если вы делаете регулярные ежедневные полные бэкапы баз.
Почему нельзя сжимать основной файл данных (.mdf) через Shrink Database?
Сжатие файла данных (.mdf) приводит к жесточайшей дефрагментации индексов (до 99%), после чего 1С начинает сильно тормозить. Сжимать можно только файл лога транзакций (.ldf).
Как предотвратить повторное разрастание файла .ldf в будущем?
Оставьте модель восстановления в режиме Simple или настройте в SQL Server Agent ежечасное резервное копирование журнала транзакций (Transaction Log Backup).