Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается сжатие базы данных с помощью объекта в SQL Server 2014 с помощью SQL Server Management Studio или Transact-SQL.
Сжатие файлов данных позволяет освободить неиспользуемое пространство путем перемещения страниц данных с конца файла в незанятое пространство ближе к началу файла. Когда в конце файла образуется достаточно свободного места, страницы данных в конце файла могут быть освобождены и возвращены в файловую систему.
Перед началом работы
Ограничения и условия
База данных не может быть меньше минимального размера базы данных. Минимальный размер — это размер, указанный при первоначальном создании базы данных или последний явный набор размеров с помощью операции изменения размера файла, например DBCC SHRINKFILE. Если, допустим, база данных была создана с размером 10 МБ и затем увеличилась до 100 МБ, ее можно сжать только до 10 МБ, даже если удалить из нее все данные.
Невозможно уменьшить базу данных во время резервного копирования базы данных. И наоборот, невозможно создать резервную копию базы данных во время операции сжатия базы данных.
DBCC SHRINKDATABASE завершится ошибкой при обнаружении индекса xVelocity, оптимизированного для памяти columnstore. Если работа будет выполнена успешно до того, как столкнется с индексом columnstore, то база данных может стать меньше. Чтобы завершить DBCC SHRINKDATABASE, отключите все колоночные индексы перед выполнением DBCC SHRINKDATABASE, а затем перестройте колоночные индексы.
Рекомендации
Просмотр количества свободного (нераспределенного) пространства в базе данных. Дополнительные сведения см. в разделе Отображение данных и сведений о пространстве журнала для базы данных.
Обратите внимание на следующие сведения при планировании сжатия базы данных.
Операция сжатия наиболее эффективна после операции, которая создает много неиспользуемого пространства, например усечения таблицы или операции удаления таблицы.
Большинству баз данных требуется некоторое свободное пространство для выполнения обычных ежедневных операций. Если вы повторно сжимаете базу данных и заметите, что размер базы данных увеличивается снова, это означает, что для регулярных операций требуется пространство, которое было уменьшено. В таких случаях повторное сжатие базы данных бессмысленно.
Операция сжатия не сохраняет состояние фрагментации индексов в базе данных и обычно увеличивает фрагментацию до степени. Это еще одна причина, по которой не стоит выполнять регулярное сжатие базы данных.
Если у вас нет определенного требования, не устанавливайте параметр AUTO_SHRINK базы данных в значение ON.
Безопасность
Разрешения
Необходимо быть членом фиксированной роли сервера sysadmin или фиксированной роли базы данных db_owner.
Использование среды SQL Server Management Studio
Сжатие базы данных
В Обозревателе объектов подключитесь к экземпляру СУБД SQL Server, а затем разверните этот экземпляр.
Разверните узел Базы данных, и щелкните правой кнопкой мыши базу данных, которую вы хотите сжать.
Наведите указатель на задачи, наведите указатель на сжатие и щелкните "База данных".
База данных
Отображает имя выбранной базы данных.Выделенное в данный момент место
Отображает суммарное используемое и неиспользуемое пространство для выбранной базы данных.Доступное свободное место
Отображает суммарное свободное место для файлов журналов и данных в выбранной базе данных.Реорганизовать файлы перед освобождением неиспользованного места
Установка данного флажка эквивалентна выполнению инструкции DBCC SHRINKDATABASE с заданием целевого процентного параметра. Снятие этого флажка равнозначно выполнению процедуры DBCC SHRINKDATABASE с параметром TRUNCATEONLY. По умолчанию этот параметр не выбран при открытии диалогового окна. Если этот флажок установлен, то пользователь должен задать целевое процентное значение.Максимальное свободное пространство в файлах после сжатия
Введите максимальный процент свободного пространства, которое должно остаться в базе данных после ее сжатия. Допустимы значения от 0 до 99.Нажмите кнопку ОК.
Использование Transact-SQL
Сжатие базы данных
Подключитесь к движку СУБД.
На панели «Стандартная» нажмите Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере для уменьшения размера файлов данных и журналов в
UserDBбазе данных используется DBCC SHRINKDATABASE, а также для предоставления10процента свободного места в базе данных.
DBCC SHRINKDATABASE (UserDB, 10);
GO
Дальнейшие действия. После сжатия базы данных
Данные, перемещаемые в процессе сжатия файла, могут быть разбросаны по любым доступным местам в файле. Это вызывает фрагментацию индекса и может увеличить время выполнения запросов, выполняющих поиск в диапазоне индекса. Чтобы устранить фрагментацию, предусмотрите возможность перестроения индексов файла после сжатия.
См. также
Сжатие файла
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)
DBCC (Transact-SQL)
DBCC SHRINKFILE (Transact-SQL)
Файлы и файловые группы базы данных