Уменьшение размера базы или лога SQL
>> 12 июля 2012 г.
После определенных манипуляций с базой возникают ситуации, когда размер ее файлов превышает разумные пределы (либо, как у меня, в два раза больше положенного 103 Гб вместо 65 Гб, и это только файл базы данных). Данная ситуация разрешается простым шринком.
Read more...
Приведенные ниже варианты кода довольно просты:
- DBCC shrinkdatabase(N’имя_базы’, TRUNCATE_ONLY); — усечение всей базы
- use [имя_базы] DBCC SHRINKFILE (N’имя_базы_Data’, 101); — усечение только файла данных до размера 101 мб
- use [имя_базы] DBCC SHRINKFILE (N’имя_базы_Log’, 0); — усечение только файла транзакций до размера 0 мб
Но при выполнении этой операции могут возникнуть проблемы. Проявляются они в основном на тех базах данных, для которых установлена модель архивирования Full (для модели Simple проблем, как правило, не возникает, далее поясним почему). В сообщениях об ошибке говорится о том, что log-файл находится в использовании, поэтому операцию выполнить невозможно — это более чем удивительно, поскольку обычно процесс шринка производится при завершенной работе пользователей (никто не обращается к базе). Монитор соединений так же показывает отсутствие какой-либо активности.