Metrika

4 марта 2011 г.

Очистка лога с помощью SHRINKDATABASE в SQL Server 2008

В SQL Server 2008 используется несколько моделей восстановления (Recovery Models) для баз данных:
  1. Simple - в логе минимум информации, можно восстанавливаться из полного или инкрементального бэкапа, но нельзя восстановиться в состояние на определенный момент времени;
  2. Full - можно восстановиться в состояние на определенный момент времени;
  3. Bulk-logged - в этом типе операции с большими массивами данных (Bulk) логируются в минимальном размере, в отличии от Full recovery model.
Подробнее можно почитать тут:  http://databases.about.com/od/sqlserver/a/recoverymodels.htm 
К чему перечисление моделей восстановления? К тому, что по умолчанию SQL Server ставит Recovery Model = Full, что приводит к тому что команда SHRINKDATABASE не приводит к очистке лога.
Для того, что бы очистить лог, сначала надо сменить Recovery Model:

alter database db_name set recovery simple
Посмотреть какая у баз стоит Recovery model можно так:
select name,recovery_model_desc from sys.databases
Далее можно очищать лог:
DBCC SHRINKDATABASE (db_name)
 Есть другой способ очистить лог, если не хочется отключать Full recovery model. Нужно сделать Detach базы, удалить файл лога и снова приатачить базу, тогда создаться пустой лог-файл.

Комментариев нет :

Отправить комментарий