Очистка логов тразакций

Порядок очистки логов следующий:
- Сделать полный backup базы;
- В QA выполнить для нужной базы усечение журнала транзакций без создания самого архива, например:
BACKUP LOG unform WITH TRUNCATE_ONLY
или, что равнозначно:
BACKUP LOG unform WITH NO_LOG;
- Сделать Shrink базы:
(Правой кнопкой на базе в EM ->все задачи -> Srink Database);
- Чтобы в дальнейшем не страдать этой проблемой и поскольку log для нас не столь важен выбрать модель восстановления Simple:
Свойства базы -> Options -> Recovery model -> Simple

Можно сделать еще проще, перевести базу в режим восстановления Simple, сделать Backup вручную или дождаться его выполнения по времени в шедуллере, и потом выполнить Shrink. Все!
Если лог сжался до определенного размера, значит он был задан таким при создании базы. Тогда смотри следующее сообщение.

Или так:

backup log unform with no_log
use unform
select fileid,name from sysfiles -- узнаем какой id у log-файла
dbcc shrinkfile (2,100) -- где 2 - id log-файла; 100 - желаемый размер


Или так:

EXEC ('ALTER DATABASE '+@base_name+' SET RECOVERY SIMPLE')
DBCC SHRINKDATABASE (@base_name,0)
EXEC ('ALTER DATABASE '+@base_name+' SET RECOVERY BULK_LOGGED')


Или совсем так:
С помощью хирургического вмешательства можно также избавиться от излишне разросшегося журнала транзакций:

- в EM отключить базу (Все задачи -> Detach Database);
- физически удалить файл логов выбранной базы;
- подключить базу данных несмотря на сообщение об отсутствии файла логов (Все задачи -> Attach Database);
- Выбрать режим восстановления simple, как сказано выше для исключения этой проблемы в дальнейшем.

 

 

Комментарии закрыты