Почему в моем журнале SQL Server остается 99% свободного места после полного предупреждения?
Удаляя большое количество записей, я получаю эту ошибку:
Журнал транзакций для базы данных "databasename" заполнен
Я нашел этот ответ очень полезным, он рекомендует:
- Щелкните правой кнопкой мыши свою базу данных в SQL Server Manager и откройте страницу "Параметры".
- Переключить модель восстановления с полной на простую
- Щелкните правой кнопкой мыши базу данных еще раз. Выберите Tasks Shrink, Files. Уменьшите файл журнала до нужного размера (я обычно придерживаюсь 20-25% размера файлов данных).
- Вернитесь к полной модели восстановления
- Сделайте полную резервную копию базы данных прямо сейчас
Вопрос: на шаге 3, когда я иду в shrink
> files
и выбрать log
от file type
выпадающее меню, оно говорит мне, что 99% выделенного пространства свободно.
Из ~4500 МБ выделенного пространства освобождается ~4400 МБ (размер файла данных ~3000 МБ).
Значит ли это, что мне пора идти, и нет необходимости сокращаться?
Я не понимаю этого. Почему это так, учитывая предупреждение, которое я получил изначально?
1 ответ
Я не любитель гипербол, но о журналах транзакций SQL Server написаны буквально миллиарды статей.
Дайджест-версия Reader: если вы удаляете 1 000 000 строк за раз, журналы будут увеличиваться, потому что он записывает эти 1 000 000 удалений на случай, если придется откатить транзакцию. Пространство, необходимое для хранения этих записей, не освобождается, пока транзакция не будет зафиксирована. Если ваши журналы недостаточно велики, чтобы вместить 1 000 000 удалений, журнал заполнится, выдаст ту ошибку, которую вы видели, и откатит всю транзакцию. Тогда все это пространство, скорее всего, будет освобождено. Теперь у вас есть большой журнал с большим количеством свободного места.
Вы, вероятно, достигнете предела для вашего файла журнала в 4,5 ГБ, и он не станет больше. Чтобы не заполнять ваши журналы в будущем, разбивайте свои транзакции на меньшие суммы, например, удаляя 1000 записей за раз. Операция сжатия уменьшает физический размер файла, например, с 4,5 ГБ до 1 ГБ.