Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Урізання логів в SQL Server 2012.

Список транзакцій в MS SQL мають звичай розростатися, що іноді може призвести до закінчення місця на диску. Щоб цього не відбувалося, в SQL Server існує операція урізання логів (Truncate). Урізання логів проводиться автоматично, в залежності від моделі відновлення:

• У простій моделі (Simple) - після досягнення контрольної точки;
• У моделі повного відновлення (Full) - після створення бекапа логів, за умови що з часу попереднього бекапа була досягнута контрольна точка.

Але бувають ситуації, коли автоматичне урізання з якихось причин не проводиться і логи займають все вільне місце. Причому відбувається це завжди несподівано і потрібно терміново звільнити місце. В цьому випадку урізання можна зробити вручну.

Подібна ситуація, як правило, відбувається з моделлю відновлення 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

Це всього лише один із способів швидкого зменшення розміру логів.Чи не найкрасивіший