Урезание (Shrink) логов в SQL Server 2012

Автор Itworkroom

Всегда логи транзакций в MS SQL растут, что может повлечь за собой серьезные проблемы в виде нехватки места на диске. Чтобы этого избежать, в MS SQL Server существует операция сокращения и размера файлов данных и файлов журнала логов (Shrink). Урезание логов производится автоматически, в зависимости от модели восстановления:

• В простой модели (Simple) — после достижения контрольной точки;
• В модели полного восстановления (Full) — после создания backup логов, при условии что со времени предыдущего backup была достигнута контрольная точка.

Но бывают ситуации, когда автоматическое урезание по каким либо причинам не производится и логи занимают все свободное место. Причем происходит это всегда неожиданно и требуется срочно освободить место. В этом случае урезание можно произвести вручную.

Подобная ситуация, как правило, происходит с моделью восстановления Full, при использовании которой лог нельзя обрезать до тех пор, пока в резервную копию не попали все транзакции. Это необходимо для того, чтобы обеспечить наличие непрерывную последовательность номеров (LSN) записей в журнале. Соответственно для урезания надо либо сделать полное резервное копирование БД, либо (что проще и быстрее) временно перевести ее в режим Simple.

Для урезания лога открываем Management Studio, выбираем нужную базу, нажимаем на ней правой клавишей мыши и в открывшемся контекстном меню выбираем пункт «Properties». Переходим на вкладку «Options» и изменяем модель восстановления базы (Recovery model) на Simple.

изменение моделиВ том же контекстном меню переходим в раздел Tasks(Задачи) -> Shrink(Обрезка) -> Files(Файлы). В поле File type(Тип файла) выбираем Log, в поле File name(имя файла) указываем имя файла логов. В поле «Shrink action» выбираем «Reorganize pages before releasing unused space»(Реорганизовать страницы, перед тем как освободить неиспользуемое пространство), задаем желаемый размер файла и жмем ОК.урезание логов БД

После завершения операции возвращаем режим восстановления базы обратно в Full.

Тоже самое можно проделать из Query Analizer с помощью скрипта:

USE ″Имя базы″
ALTER DATABASE ″Имя базы″ SET RECOVERY SIMPLE
DBCC SHRINKFILE (″Имя файла лога″, ″Желаемый размер″);
ALTER DATABASE ″Имя базы″ SET RECOVERY FULL

источник

2 comments on “Урезание (Shrink) логов в SQL Server 2012

  1. Не пишите полнейшую чушь!!! Если в FULL модели восстановления есть необходимость усечения логов — значит неверно реализовано создание резервных копий журнала транзакций!!!!

    Для SIMPLE ОК, можно усекать, для фулл — написали фигню

    • Добрый день Сергей, статья носит информативный характер. Это тот случай, когда надо что-то предпринять и сделать для решения проблемы. Вы правильно подметили, что было неверно реализовано создание резервных копий журнала транзакций!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *