Ms sql database shrink: Shrink a database — SQL Server

Отображение данных и информации о пространстве журнала для базы данных — SQL Server

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья

Применяется к: SQL Server База данных SQL Azure Azure SQL Управляемый экземпляр Azure Synapse Analytics Analytics Platform System (PDW)

В этой статье описывается, как отображать данные и информацию о пространстве журнала для базы данных в SQL Server с помощью управления SQL Server Студия или Transact-SQL.

Прежде чем начать

Разрешение на запуск sp_spaceused предоставляется роли public . Только члены фиксированной роли базы данных db_owner могут указывать параметр @updateusage .

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

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

  2. Расширить Базы данных .

  3. Щелкните базу данных правой кнопкой мыши, выберите Отчеты , выберите Стандартные отчеты , а затем выберите Использование диска .

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

Для отображения данных и информации о пространстве журнала для базы данных с помощью процедуры sp_spaceused
  1. Подключитесь к компоненту Database Engine.

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

  3. Вставьте следующий пример в окно запроса и выберите Выполнить . В этом примере системная хранимая процедура sp_spaceused используется для получения сведений о дисковом пространстве для всей базы данных, включая таблицы и индексы.

     ЕГЭ AdventureWorks2012;
    ИДТИ
    EXEC sp_spaceused;
    ИДТИ
     
Для отображения используемого пространства данных по объектам и единицам распределения для базы данных
  1. Подключитесь к компоненту Database Engine.

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

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

     ВЫБЕРИТЕ
      t.object_id,
      OBJECT_NAME(t.object_id) Имя объекта,
      сумма (u.total_pages) * 8 Total_Reserved_kb,
      сумма (u.used_pages) * 8 Used_Space_kb,
      u.type_desc,
      max(p. rows) количество строк
    ОТ
      sys.allocation_units u
      ПРИСОЕДИНЯЙТЕСЬ к sys.partitions p на u.container_id = p.hobt_id
      ПРИСОЕДИНЯЙТЕСЬ к sys.tables t на p.object_id = t.object_id
    ГРУППА ПО
      t.object_id,
      ИМЯ_ОБЪЕКТА(t.object_id),
      u.type_desc
    СОРТИРОВАТЬ ПО
      Описание Used_Space_kb,
      ИмяОбъекта;
     
Чтобы отобразить данные и информацию о пространстве журнала для базы данных, запросив sys.database_files
  1. Подключитесь к компоненту Database Engine.

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

  3. Вставьте следующий пример в окно запроса, затем выберите Выполнить . Этот пример запрашивает представление каталога sys.database_files, чтобы вернуть конкретную информацию о файлах данных и журналов в 9База данных 0123 AdventureWorks2022 .

     ЕГЭ AdventureWorks2012;
    ИДТИ
    ВЫБЕРИТЕ file_id, имя, тип_описание, физическое_имя, размер, максимальный_размер
    ИЗ sys. database_files;
    ИДТИ
     

См. также

SELECT (Transact-SQL)
sys.database_files (Transact-SQL)
sp_spaceused (Transact-SQL)
Добавить данные или файлы журнала в базу данных
Удалить данные или файлы журнала из базы данных

Обратная связь

Просмотреть все отзывы о странице

сервер sql — невозможно сжать базу данных

спросил

Изменено
4 года, 3 месяца назад

Просмотрено
2к раз

Я установил SQL Server 2017. Я создал базу данных test_db размером 512 МБ и пытаюсь сжать базу данных с помощью SQL-запроса:

 dbcc сжатия файла (N'test_db', только усечение)
 

Но я не вижу уменьшения базы данных. В случае, если я использую следующий SQL-запрос:

 dbcc Термоусадочный файл (N'test_db', 1)
 

файл сжимается до 3 Мб.

Не могли бы вы объяснить разницу в поведении?
Поскольку TRUNCATEONLY освобождает пустые места в конце файла, почему он не может сжать файл, когда файл данных пуст.

  • sql-сервер
  • сокращение

4

Если вы откроете документацию DBCC SHRINKFILE (Transact-SQL), вы найдете

target_size

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

Таким образом, если вы хотите уменьшить размер ниже размера, указанного при создании файла, вы должны указать target_size даже для truncateonly :

 dbcc shrinkfile(1, 1, truncateonly)
 

SQL Server выполняет операцию сжатия базы данных с параметром NOTRUNCATE , чтобы освободить место в конце файла данных.