После обрезания лога транзакций, файл базы данных не уменьшился

16 июня 2016

После обрезания лога транзакций - файл базы данных не уменьшился!

Для уменьшения базы данных необходимо сделать сжатие базы данных. Инструмент для данной процедуры SQL Server Management Studio Express

Каждый файл базы данных может быть сжат с помощью удаления неиспользуемых страниц. Хотя компонент Database Engine эффективно использует дисковое пространство, возникают ситуации, когда файлам больше не требуется такой объем, как раньше. Это может привести к необходимости сжатия файла. Файлы данных и журналов транзакций можно уменьшать (сжимать). Предусмотрена возможность сжатия файлов базы данных вручную (как группы или по отдельности) или автоматически через определенные промежутки времени.

Сжатие файлов всегда ведется с конца. Например, если имеется файл размером 5 ГБ и при этом в качестве значения аргумента target_size инструкции DBCC SHRINKFILE задано 4 ГБ, компонент Database Engine освободит максимальный объем дискового пространства из последнего гигабайта файла. Если в освобождаемой части файла имеются занятые страницы, компонент Database Engine сначала переместит их в сохраняемую часть. Сжать базу данных можно только до той степени, пока в ней не останется свободного места. Например, если база данных размером 5 ГБ содержит 4 ГБ данных, а в качестве значения аргумента target_size инструкции DBCC SHRINKFILE задано 3 ГБ, будет освобожден только 1 ГБ.

Автоматическое сжатие базы данных
 
Если параметр базы данных AUTO_SHRINK установлен в значение ON, компонент Database Engine автоматически сжимает базы данных, в которых имеется свободное место. Этот параметр настраивается с помощью инструкции ALTER DATABASE. По умолчанию этот параметр имеет значение OFF. Компонент Database Engine периодически проверяет использование дискового пространства в каждой базе данных. Если параметру AUTO_SHRINK в базе данных присвоено значение ON, компонент Database Engine уменьшает размер файлов этой базы данных. Эта операция выполняется в фоновом режиме и не влияет на действия пользователя в базе данных.
 
Сжатие базы данных вручную
 
 
Действия для того, чтобы сжать файл базы данных:
1. Выбрать базу данных в SQL Server Management Studio Express

2. Нажать правой клавишей мыши и в списке выбрать пункт Task

3. В открывшемся меню выбрать SHRINK

4. Выбрать database, далее ОК.

5. Дождаться окончания процесса

С помощью инструкции DBCC SHRINKDATABASE нельзя сжимать всю базу данных до размера, который меньше исходного. Поэтому, если база данных была создана с размером 10 МБ и потом увеличилась до 100 МБ, ее можно сжать только до 10 МБ, даже если все данные удалены из базы данных.

Пример, команды для сжатия базы данных parsec3trans 

dbcc shrinkdatabase (parsec3trans, 10)

ПримечаниеПримечание

Нельзя сжимать базу данных или журнал транзакций при их резервировании. С другой стороны, нельзя создавать резервную копию базы данных или журнала транзакций при их сжатии.

Вернуться к списку статей