В процессе активной работы с базами 1С:Предприятие на платформе MS SQL Server файл журнала транзакций (.ldf) может увеличиваться до огромных размеров, занимая всё свободное дисковое пространство. У многих специалистов возникает желание выполнить выгрузку базы в файл .dt, удалить базу в MS SQL Server, создать её заново и загрузить .dt. Разберём, почему такой подход считается опасным, и рассмотрим штатные безопасные методы уменьшения лога транзакций.
Выгрузка информационной базы в файл .dt предназначена исключительно для файловых вариантов и переноса конфигураций. Использование формата .dt в качестве резервного копирования или способа обслуживания крупной рабочей СУБД несёт в себе серьёзные риски:
Проанализируем причины роста журнала транзакций. Объем файла .ldf напрямую зависит от выбранной модели восстановления базы данных в MS SQL Server:
BACKUP LOG). Полная модель необходима только тогда, когда требуется возможность восстановления базы на любой произвольный момент времени.Если для вашей базы 1С достаточно ежедневных полных бэкапов (например, создаваемых каждую ночь) и вам не нужно откатывать базу на конкретную минуту дня, целесообразно перевести базу в простую модель восстановления.
Рассмотрим, как быстро изменить модель восстановления и усечь файл журнала с помощью интерфейса MS SQL Server Management Studio (SSMS) или с помощью T-SQL команд.
Способ 1. Через графический интерфейс SSMS:
Способ 2. С помощью T-SQL скрипта:
Выполним эквивалентные действия с помощью следующего скрипта:
-- Переводим базу в простую модель восстановления
ALTER DATABASE [ИмяБазы1С] SET RECOVERY SIMPLE;
GO
-- Выполняем сжатие файла журнала транзакций
DBCC SHRINKFILE (N'ИмяФайлаЛога_log', 1);
GO
Если вы используете полную модель восстановления и хотите сохранить возможность точечного отката, удалять или принудительно обнулять лог без создания бэкапа нельзя. Разберём правильный алгоритм обслуживающего скрипта:
-- Создаем бэкап журнала транзакций
BACKUP LOG [ИмяБазы1С] TO DISK = N'C:\Backup\LogBackup.trn';
GO
-- Выполняем сжатие файла лога
DBCC SHRINKFILE (N'ИмяФайлаЛога_log', 100);
GO
Проанализируем дополнительные настройки СУБД, которые помогут избежать проблем с журналом транзакций в будущем:
512 MB или 1024 MB. Это позволит избежать сильной фрагментации виртуальных файлов журнала (VLF).AUTO_SHRINK вызывает постоянно повторяющиеся циклы сжатия и расширения файлов, что сильно деградирует производительность дисковой подсистемы и вызывает высокую фрагментацию индексов.DBCC OPENTRAN.