MS SQL: Простая модель восстановления Simple для 1С (уменьшаем .ldf)
- Диск сервера полностью забился, свободное место упало до 0 МБ.
- Файл базы данных
.mdfвесит 20 ГБ, а файл журнала транзакций.ldfраздулся до 300-500 ГБ. - При проведении документов в 1С появляется ошибка:
The transaction log for database is full due to 'LOG_BACKUP'.
Почему разрастается файл .ldf простыми словами
По умолчанию в MS SQL Server включена Полная модель восстановления (Full Recovery Model). В этом режиме SQL Server записывает в файл .ldf абсолютно каждое мельчайшее действие и держит их вечно, ожидая, пока администратор сделает специальный бэкап журнала транзакций. Если такие бэкапы не настроены, файл лога растет бесконечно, пока не поглотит весь жесткий диск.
Решение: переключение в режим Simple и обрезка лога:
- Откройте SQL Server Management Studio (SSMS): Подключитесь к вашему серверу баз данных.
- Переключите модель в Simple (Простая): Нажмите правой кнопкой на базу 1С → Свойства (Properties) → вкладка «Параметры» (Options) → в строке «Модель восстановления» (Recovery Model) выберите «Простая» (Simple) → нажмите ОК.
- Сожмите раздувшийся файл лога (Shrink): Нажмите правой кнопкой на базу 1С → Задачи (Tasks) → Сжать (Shrink) → Файлы (Files):
- Тип файла: выберите «Журнал» (Log);
- Операция сжатия: выберите «Освободить неиспользуемое место»;
- Нажмите ОК.
- Результат: Файл
.ldfмгновенно уменьшится сотен гигабайт до компактных 100-500 МБ, освободив терабайты места на сервере.
Частые вопросы (FAQ)
Не потеряются ли данные документов при сжатии лога в режиме Simple?
Нет! Все ваши проводки, справочники и документы хранятся в основном файле данных (.mdf). Журнал .ldf хранит только временные технические шаги транзакций.
В чем плюс Полной модели (Full) и когда она действительно нужна?
Полная модель нужна только крупным корпорациям, где делают бэкапы лога каждые 15 минут, чтобы при аварии восстановить базу с точностью до секунды. Для 95% компаний простой модели Simple с ночным полным бэкапом более чем достаточно.
Как выполнить сжатие лога быстрой SQL-командой?
Выполните запрос: ALTER DATABASE [ИмяБазы] SET RECOVERY SIMPLE; DBCC SHRINKFILE (ИмяЛогФайла_log, 1024);.
Нужно ли перезапускать сервер 1С или службу SQL после сжатия?
Нет, переключение модели восстановления и сжатие лога происходят 'на лету' без остановки работы пользователей.