Чистка логов базы данных MSSQL
Вообще процесс чистки логов должен проходить планово, и следить за этим и настраивать должен профессиональный админ. Однако бывает так что на вашем казалось бы небольшом девелоперском проекте для тестов логи неожиданно превысили установленный размер и возникла следующая проблема:
Сама проблема:
The transaction log for database 'база_данных' is full due to 'LOG_BACKUP'.
Проблему разумеется надо решать.
И вот как это делается:
Для обрезки лога используется вот эта команда:
DBCC SHRINKFILE(база_данных_log, 100);
При выполнении этой команды, LOG файл будет обрезан до 100 мегабайт.
А вот скрипт как это делать по уму:
USE база_данных;
GO
-- Изменяем модель восстановления базы данных на SIMPLE.
ALTER DATABASE база_данных
SET RECOVERY SIMPLE;
GO
-- Обрезаем LOG файл до 1 мегабайта.
DBCC SHRINKFILE (база_данных_log, 1);
GO
-- Возвращаем модель восстановления базы данных на FULL.
ALTER DATABASE база_данных
SET RECOVERY FULL;
GO
P.S.
Этой командой, можно посмотреть файлы базы данных и их размеры:
select * from sys.database_files;
P.P.S.
Данный метод я использую на тестовых средах, для продуктовых систем работающих 24X7X365 — подходы могут сильно отличаться.
Вот и всё!