Search
Write a publication
Pull to refresh

Уменьшение размеров базы SQL или проблемы команды shrink

Многие администраторы баз данных сталкивались с проблемой роста объемов информации в базах MS SQL Server 2005. Главным источником проблем обычно является так называемый log-файл (файл с расширением *.ldf или журнал транзакций). Данная ситуация разрешается простым шринком (уменьшением объемов log-файла) — об этом знают практически все, кто так или иначе работал с MS SQL, приведенные ниже варианты кода довольно просты:

  • DBCC shrinkdatabase(N'имя_базы', TRUNCATE_ONLY); — усечение всей базы
  • use [имя_базы] DBCC SHRINKFILE (N'имя_базы_Data', 101); — усечение только файла данных до размера 101 мб
  • use [имя_базы] DBCC SHRINKFILE (N'имя_базы_Log', 0); — усечение только файла транзакций до размера 0 мб


Но бывает так, что по каким-то причинам уменьшить объемы не получается, и в момент исполнения кода появляются сообщения об ошибках. Такая проблема проявляется в основном на тех базах данных, для которых установлена модель архивирования Full (для модели Simple проблем, как правило, не возникает, далее поясним почему). В сообщениях об ошибке говорится о том, что log-файл находится в использовании, поэтому операцию выполнить невозможно — это более чем удивительно, поскольку обычно процесс шринка производится при завершенной работе пользователей (никто не обращается к базе). Монитор соединений так же показывает отсутствие какой-либо активности.
В документации по этому поводу информация есть, но ее чтение после второго абзаца наводит тоску зеленого оттенка. Анализ сообщений на различных форумах и практическим путем было установлено следующее. Прежде, чем выполнять шринк базы необходимо выполнить архивацию, но не всей базы, а именно файла транзакций. Только после завершения этой процедуры можно смело выполнять команду shrink, и результат будет достигнут. Надо сказать, что процедура архивации нужна только, если для базы данных установлена модель архивирования Full. В модели Simple log-файл автоматически помечается, как свободный для использования и команда shrink работает без проблем, в модели Full файл становится свободным для использования только после backup-а соответствующего файла.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.