Чи дійсно потрібно зберігати .LDF файли?


9

Кожного місяця ми робимо знімок у кінці місяця нашої виробничої бази даних. Ці знімки в кінці місяця розроблені виключно для цілей звітності, на них жодного разу не робиться жодних вставок, оновлень та видалень. Кожен із цих знімків має .MDFі .LDFфайл.

Я хочу видалити .LDFфайли та звільнити трохи місця на сервері. Чи є причини, чому мені потрібно зберігати .LDFфайли?

Пояснення:

Наша виробнича база даних відтворюється щовечора з файлових витягів з іншої системи. Ми повідомляємо лише про виробничу базу даних ... жодних оновлень не робиться.

Нічний процес:
з того, що я можу сказати ...
Щоночі таблиці таблиць даних обрізані
. Таблиці заповнюються за допомогою ряду операторів масової вставки.
Індекси перебудовуються

Відповіді:


16

Ви не повинні видаляти файл журналу. Якщо ви намагаєтесь повторно приєднати файл даних без журналу, SQL Server може технічно відтворити його, але є кілька потенційних проблем, наприклад, якщо були відкриті транзакції, коли база даних була від'єднана. У такому випадку ви втратили б дані.

Витратьте простір і не видаляйте файли журналу . Ви просите проблем з цим.

Дивіться цю статтю про журнали транзакцій , зокрема частину "Неправильне управління журналом".


9

Як було сказано в іншій відповіді , файл журналу не можна видалити. Що ви можете зробити, це встановити базу даних READ_ONLY. З базою даних в системі READ_ONLYжодних модифікацій не дозволено, і файл журналу не зростатиме. Ви можете зменшити розмір файлу журналу до мінімального розміру та досягти своєї мети - мінімальний слід. Щоб встановити базу даних, READ_ONLYзапустіть таку команду:

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

Ви можете змінити базу даних READ_WRITE, внести будь-які необхідні зміни, а потім встановити її в READ_ONLYбудь-який час, коли вам потрібно.

Файл журналу все ще необхідний для підтримки властивостей ACID бази даних.


2

Справа в тому, що ви можете створити базу даних просто за допомогою файлу mdf. Це команда sp_attach_single_file_db (Transact-SQL). Зауважте, що він буде видалений у майбутній версії Microsoft SQL Server. Але видаляти файли LDF не розумно. Акула прав: "Ти з цим просиш неприємностей". Ще одна точка зору - чи ваші ldf-файли величезні? Якщо вони є, ви можете щось з ними зробити.

  1. Встановіть вашу базу даних на просту модель відновлення . Це можна зробити, лише якщо ви не хочете повертати транзакції
  2. Замість того щоб створювати файли MDF та LDF, створіть повний файл резервного копіювання бази даних (.BAK). Це буде менший tnan MDF + LDF

-3

Ось рішення, яке я придумав, щоб зменшити файли LDF.

  1. Від'єднати базу даних
  2. Перейменуйте файл LDF у * _old.ldf
  3. Вкласти базу даних
  4. Видаліть референт до відсутнього LDF

Це відтворює файл LDF розміром 504K.

  1. Видалити * _old.ldf
  2. Порожній кошик

Це відновило значну кількість дискового простору на сервері. Це працює для нас, оскільки всі ці бази даних є ТОЛЬКО статичними базами звітів. Ніяких вставок, оновлень або видалень ніколи не буде виконано проти цих баз даних.

ОНОВЛЕННЯ 2019-09-24: Так, я згоден, це дійсно погана ідея. Я перестав це робити майже одразу. Я відновив усі індекси, використовуючи коефіцієнт заповнення 100. Скоротив лише файли .ldf. І змінила всі бази даних, ЩО ЧИТАТИ ТОЛЬКО.


6
Ого, це справді погана ідея. Що робити, якщо база даних не відлучається успішно, або втрачається або пошкоджується десь між 1 і 3? Ви ЕКРАНОВІ. У вас є копії бази даних ZERO.
Аарон Бертран

3
Правильний спосіб зробити це: 1. Візьміть резервну копію бази даних COPY_ONLY. 2. Відновіть його на сервері звітності. 3. Встановіть відновлення на просте і позначте відновлену копію лише для читання. 4. Стисніть файл журналу вручну. Так, вам тим часом потрібно місце, але ви збережете свою роботу!
Аарон Бертран
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.