У меня есть база данных SQL Server 2008 R2, используемая несколькими развернутыми программами.
Вопрос: Есть ли простой способ показать, сколько места занимает каждая таблица, для всех таблиц в базе данных, и отличить логическое пространство от дискового пространства?
Если я использую SSMS (Management Studio), свойства хранилища, показанные для базы данных, будут отображать 167 МБ с 3 МБ «доступными» (примерно подходящего размера, но меня беспокоят доступные 3 МБ - стоит ли беспокоиться об этом ограничении) , если я знаю, что у меня достаточно места на диске?)
Я могу углубиться в каждый стол, но это займет вечность.
Я знаю, что могу написать свои собственные запросы и протестировать их, но я хотел бы знать, есть ли уже простой (встроенный?) Способ сделать это.
На вопрос переполнения стека ответили :
источник
Запрос, связанный и скопированный @Nelson, является неточным: он игнорирует индексированные представления, полнотекстовые индексы, XML-индексы и т. Д.
Если вы хотите запрос, который будет включать в себя все без выполнения
sp_spaceused
черезsp_MSForEachTable
, то я уже опубликовал два его варианта (один здесь на DBA.StackExchange, а другой на StackOverflow), поэтому я не буду копировать их здесь:Для каждой таблицы / индексированного представления: sp_spaceused - Как измерить размер в ГБ во всех таблицах в SQL
Для каждого индекса: использование пространства на sys.allocation_units и sp_spaceused
источник
Просто для удовольствия, вот запрос, который будет генерировать те же данные, что и отчет в ответе nateirvin
Хорошо, потому что я действительно ненавижу себя, я написал запрос, который сгенерирует результаты отчета, отформатирует его в виде таблицы HTML и отправит по электронной почте. Сопоставление цветов фона отчета оставлено читателю в качестве упражнения.
источник