- В этой теме 1 ответ, 2 участника, последнее обновление 3 часа, 45 минут назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как правильно сжать .ldf файл при бэкапе журнала каждые 15 минут?
как корректно сжать .ldf бэкап журнала транзакций делается регулярно каждые 15 минут
Если у вас настроено регулярное резервное копирование журнала транзакций (каждые 15 минут), то корректное сжатие файла журнала (.ldf) в MS SQL Server делается так:
1. Убедитесь, что база работает в режиме восстановления Full (полный), иначе бэкап журнала не делается.
2. После успешного резервного копирования журнала транзакций можно выполнить команду усечения (truncation) и сжатия файла журнала.
Стандартный порядок действий:
— Выполнить резервное копирование журнала транзакций:
|BACKUP LOG [ИмяБазы] TO DISK = N’Путь_к_файлу_бэкапа.trn’ WITH NOFORMAT, NOINIT, NAME = N’ИмяБазы-Transaction Log Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
— После успешного бэкапа выполнить сжатие файла журнала:
|DBCC SHRINKFILE (ИмяФайлаЖурнала, ЦелевойРазмерВМБ)
Где ИмяФайлаЖурнала — логический файл журнала (можно узнать через:
|SELECT name FROM sys.database_files WHERE type_desc = ‘LOG’ AND database_id = DB_ID(‘ИмяБазы’)
ЦелевойРазмерВМБ — желаемый размер файла журнала в мегабайтах, например 10 или 20.
Пример:
|DBCC SHRINKFILE (ИмяЖурнала, 10)
Важно:
— Не рекомендуется делать сжатие файла журнала слишком часто, т.к. это может привести к фрагментации и снижению производительности.
— Если бэкап журнала делается каждые 15 минут, то сжатие можно делать, например, раз в сутки или по мере необходимости.
— Автоматическое сжатие (Auto Shrink) для базы лучше отключить.
— Если журнал растет слишком быстро, проверьте, нет ли открытых транзакций, которые не завершаются.
— Можно автоматизировать процесс с помощью SQL Agent Job, который сначала делает бэкап журнала, затем DBCC SHRINKFILE.
Пример скрипта для задания агента:
|BACKUP LOG [ИмяБазы] TO DISK = N’Путь_к_бэкапуИмяБазы_TransactionLog.trn’ WITH NOFORMAT, NOINIT, NAME = N’ИмяБазы-Transaction Log Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10;
|DBCC SHRINKFILE ((SELECT name FROM sys.database_files WHERE type_desc = ‘LOG’ AND database_id = DB_ID(‘ИмяБазы’)), 10);
Если хотите, могу помочь с готовым скриптом под ваши параметры.
Рекомендую посмотреть здесь: