База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как уменьшить лог транзакций и errorlog в MS SQL Server?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
18 августа 2026 в 13:40 #38424
лог транзакций и errorlog выросли до неприличных размеров
-
18 августа 2026 в 13:40 #38425
Если у вас в MS SQL Server для базы 1С сильно разросся лог транзакций (.LDF) и errorlog, вот что делать:
1. Лог транзакций (LDF) разросся
Причины:
— Модель восстановления базы стоит Full, но не делаются бэкапы логов.
— Есть открытые транзакции или долгие транзакции, которые не дают усечь лог.
— Логические имена файлов не уникальны (если база клонировалась).Решение:
— Проверьте модель восстановления базы:
MySQL1|SELECT name, recovery_model_desc FROM sys.databases WHERE name = 'ИмяВашейБазы'— Если стоит Full, сделайте полный бэкап базы и бэкап лога:
MySQL1234-- Сделать полный бэкап|BACKUP DATABASE [ИмяВашейБазы] TO DISK = 'C:BackupИмяВашейБазы_full.bak' WITH INIT-- Сделать бэкап лога|BACKUP LOG [ИмяВашейБазы] TO DISK = 'C:BackupИмяВашейБазы_log.trn' WITH INIT— После этого можно уменьшить размер лога:
MySQL1|DBCC SHRINKFILE ('ИмяФайлаЛога', желаемый_размер_в_МБ)— Если срочно нужно освободить место, временно переключите модель восстановления на Simple, уменьшите лог, потом верните обратно:
MySQL123|ALTER DATABASE [ИмяВашейБазы] SET RECOVERY SIMPLE|DBCC SHRINKFILE ('ИмяФайлаЛога', желаемый_размер_в_МБ)|ALTER DATABASE [ИмяВашейБазы] SET RECOVERY FULL— Проверьте, нет ли открытых транзакций, которые блокируют усечение лога:
MySQL1|DBCC OPENTRAN('ИмяВашейБазы')— Если база клонировалась, проверьте уникальность логических имен файлов (особенно логов). Если совпадают, измените их через свойства базы.
2. Файл errorlog разросся
— Errorlog — это лог SQL Server, который по умолчанию не обрезается автоматически.
— Можно вручную переключить лог (создать новый файл), чтобы старый можно было удалить или архивировать.В SSMS:
— Подключитесь к серверу.
— В Object Explorer выберите сервер -> Management -> SQL Server Logs.
— Правый клик -> «Recycle» (Переключить журнал).
— Старый файл errorlog можно удалить или архивировать.Или через T-SQL:
MySQL1|EXEC sp_cycle_errorlog3. Рекомендации для предотвращения
— Настройте регулярное резервное копирование логов транзакций (если Recovery Model Full).
— Настройте регулярное переключение errorlog (например, раз в неделю).
— Проверьте, что нет долгих открытых транзакций.
— Если не нужна точная точка восстановления, можно использовать Recovery Model Simple.Рекомендую посмотреть здесь, там подробно расписано про логи и их очистку:
https://winitpro.ru/index.php/2016/03/10/kak-urezat-tranzakcionnye-logi-v-sql-server-2012/
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.