вторник, 6 января 2009 г.

ЗКак уменьшить размер базы данных MS SQL Server

На хостинг-серверах обычно существует квота для базы данных MS SQL Server. Даже если ваша база данных содержит не много данных, но идет интенсивное добавление/модификация данных, то в определенный момент размер базы данных может превысить выделенный лимит и ваш аккаунт может быть, как говорят буржуи, "suspended".
Это может произойти по причине увеличения transaction log.
Очистиь его можно командой:
BACKUP LOG [databasename] WITH TRUNCATE_ONLY

После чего нужно будет еще сделать Shrink Database.
Для примера, размер базы данных сайта, который мне доводится обслуживать, уменьшился с 890MB до 12MB.
Стоит также отметить, что до следующего бекапа ваша БД остается незащищенной (на случай отказа оборудования и т.п.), так как transaction log мы очистили.

Замечу также, что в SQL Server 2008 "WITH TRUNCATE_ONLY" не поддерживается. Поэтому очистить лог перед Shrink-ом можно переключив Recovery Model из режима Full в Simple.