Сжатие файла

В этом разделе описывается сжатие данных или файла журнала в SQL Server 2014 с помощью SQL Server Management Studio или Transact-SQL.

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

В этом разделе

Перед началом работы

Ограничения и условия

  • Основной файл данных не может быть меньше размера первичного файла в базе данных модели.

Рекомендации

  • Данные, перемещаемые в процессе сжатия файла, могут быть разбросаны по любым доступным местам в файле. Это вызывает фрагментацию индекса и может увеличить время выполнения запросов, выполняющих поиск в диапазоне индекса. Чтобы устранить фрагментацию, предусмотрите возможность перестроения индексов файла после сжатия.

Безопасность

Разрешения

Необходимо быть членом фиксированной роли сервера sysadmin или фиксированной роли базы данных db_owner.

Использование среды SQL Server Management Studio

Сжатие файла данных или журнала

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните этот экземпляр.

  2. Разверните узел Базы данных и затем щелкните правой кнопкой мыши по базе данных, которую вы хотите сжать.

  3. Наведите указатель на задачи, наведите указатель на сжатие и нажмите кнопку "Файлы".

    База данных
    Отображает имя выбранной базы данных.

    Тип файла
    Выберите тип файла. Доступные варианты: Файлы данных и Файлы журнала. Значение по умолчанию: Данные. Выбор другого типа файловой группы соответственным образом изменяет выбор в других полях.

    Файловая группа
    Выберите файловую группу из списка файловых групп, связанных с выбранным ранее типом файлов . Выбор другой файловой группы соответственным образом изменяет выбор в других полях.

    Имя файла
    Выберите файл из списка имеющихся файлов выбранной файловой группы и типа.

    Местоположение
    Отображает полный путь к текущему выбранному файлу. Путь не редактируется, но его можно скопировать в буфер обмена.

    Выделенное в данный момент место
    Для файлов данных отображает выделенное в данный момент место. Для файлов журналов отображает текущее выделенное пространство, вычисленное из выходных данных DBCC SQLPERF(LOGSPACE).

    Доступное свободное место
    Для файлов данных отображается текущее свободное пространство, вычисленное из выходных данных DBCC SHOWFILESTATS(fileid). Для файлов журналов отображает текущее свободное пространство, вычисленное из выходных данных DBCC SQLPERF(LOGSPACE).

    Освободить неиспользуемое место
    Все неиспользуемое пространство, выделенное для файлов, освобождается для нужд операционной системы, а файл сжимается в последний выделенный экстент, тем самым размер файла уменьшается без перемещения данных. Не производится попыток перемещения строк на нераспределенные страницы.

    Реорганизовать страницы, перед тем как освободить неиспользуемое место
    Эквивалентно выполнению команды DBCC SHRINKFILE с указанием целевого размера файла. При выборе этого параметра необходимо указать размер целевого файла в поле Сжать файл до .

    Сжать файл до
    Определяет размер целевого файла для операции сжатия. Размер не может быть меньше текущего выделенного пространства или больше общего объема экстентов, выделенных файлу. Ввод значения, превышающего минимальное значение или максимальное значение, приведет к минимальному или максимальному значению после изменения фокуса или при щелчке любой кнопки на панели инструментов.

    Очистить файл путем переноса данных в другие файлы той же файловой группы
    Выполняется перенос всех данных из указанного файла. Этот параметр позволяет удалить файл при помощи инструкции ALTER DATABASE. Этот параметр эквивалентен выполнению DBCC SHRINKFILE с параметром EMPTYFILE.

  4. Выберите тип файла и имя файла.

  5. Дополнительно можно установить флажок Освободить неиспользуемое место .

    Выбор этого параметра приводит к освобождению любого неиспользуемого пространства файла для ОС и уменьшению размера файла до последнего выделенного блока. Это уменьшает размер файла без перемещения каких-либо данных.

  6. Дополнительно можно установить флажок Реорганизовать файлы перед освобождением неиспользуемого места . При выборе этого режима необходимо указать значение Сжать файл до . По умолчанию этот флажок снят.

    Выбор этого параметра приводит к освобождению всего неиспользуемого пространства файла для ОС и попытке перемещения строк в неразмещенные страницы.

  7. При необходимости введите максимальный процент свободного пространства, которое должно остаться в базе данных после ее сжатия. Допустимы значения от 0 до 99. Этот параметр доступен только в том случае, если установлен флажок Реорганизовать файлы перед освобождением неиспользуемого места .

  8. При необходимости установите флажок Очистить файл путем переноса данных в другие файлы той же файловой группы .

    Выбор этого режима перемещает все данные из указанного файла в другие файлы данной файловой группы. Пустой файл затем можно удалить. Этот параметр совпадает с выполнением DBCC SHRINKFILE с параметром EMPTYFILE.

  9. Нажмите кнопку ОК.

Использование Transact-SQL

Сжатие файла данных или журнала

  1. Подключитесь к движку СУБД.

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. Пример использования DBCC SHRINKFILE для уменьшения размера файла данных с именем DataFile1 в базе данных UserDB до 7 МБ.

USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO

См. также

DBCC SHRINKDATABASE (Transact-SQL)
Сжатие базы данных
Удаление файлов данных или журнала из базы данных
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)