Поделиться через


Сжатие файла

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

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

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

  • Перед началом работы выполните следующие действия.

    Ограничения

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

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

  • Сжатие файла данных или журнала с помощью различных средств.

    Среда SQL Server Management Studio

    Transact-SQL

Перед началом

Ограничения

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

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

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

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

Разрешения

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

  1. В обозревателе объектов подключитесь к экземпляру компонента Компонент SQL Server Database Engine и разверните его.

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

  3. Укажите пункты Задачи и Сжать, затем выберите пункт Файлы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

  1. Подключитесь к компоненту Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

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

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

См. также

Справочник

DBCC SHRINKDATABASE (Transact-SQL)

sys.databases (Transact-SQL)

sys.database_files (Transact-SQL)

Основные понятия

Сжатие базы данных

Удаление файлов данных или журнала из базы данных