Ms sql database shrink: Shrink a database — SQL Server
Содержание
Отображение данных и информации о пространстве журнала для базы данных — SQL Server
Редактировать
Твиттер
Фейсбук
Электронная почта
- Статья
Применяется к: 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
Для отображения данных и сведений о пространстве журнала для базы данных
В обозревателе объектов подключитесь к экземпляру SQL Server, а затем разверните этот экземпляр.
Расширить Базы данных .
Щелкните базу данных правой кнопкой мыши, выберите Отчеты , выберите Стандартные отчеты , а затем выберите Использование диска .
Использование Transact-SQL
Для отображения данных и информации о пространстве журнала для базы данных с помощью процедуры sp_spaceused
Подключитесь к компоненту Database Engine.
На стандартной панели инструментов выберите Новый запрос .
Вставьте следующий пример в окно запроса и выберите Выполнить . В этом примере системная хранимая процедура sp_spaceused используется для получения сведений о дисковом пространстве для всей базы данных, включая таблицы и индексы.
ЕГЭ AdventureWorks2012; ИДТИ EXEC sp_spaceused; ИДТИ
Для отображения используемого пространства данных по объектам и единицам распределения для базы данных
Подключитесь к компоненту Database Engine.
На стандартной панели инструментов выберите Новый запрос .
Вставьте следующий пример в окно запроса и выберите Выполнить . Этот пример запрашивает представления каталога объектов, чтобы сообщить об использовании дискового пространства для каждой таблицы и в каждой таблице для каждой единицы распределения.
ВЫБЕРИТЕ 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
Подключитесь к компоненту Database Engine.
На стандартной панели инструментов выберите Новый запрос .
Вставьте следующий пример в окно запроса, затем выберите Выполнить . Этот пример запрашивает представление каталога 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
, чтобы освободить место в конце файла данных.