Как получить результирующий набор всех таблиц в БД с использованием дискового пространства

есть ли запрос T-SQL, который я могу запустить против базы данных, которая предоставит список всех таблиц в этой базе данных, а также их текущее использование дискового пространства? Я знаю, что могу посмотреть на него в SSMS с диалоговым окном "свойства", и я знаю, как использовать sp_spaceused sproc, чтобы увидеть его по одной таблице за раз, но я хотел бы оценить использование дискового пространства всех моих таблиц, упорядоченное по максимальному использованию дискового пространства до самого низкого. Нам нужно значительно сократить размер нашей БД, поэтому я хотел бы посмотреть, какие таблицы худшие преступники.

3 ответов


create table #Temp (
    name nvarchar(128),
    [rows] char(11),
    reserved varchar(18),
    data varchar(18),
    index_size varchar(18),
    unused varchar(18)
)

insert into #Temp
    exec sp_msforeachtable 'sp_spaceused ''?'''

select * from #Temp order by cast(replace(reserved,' kb','') as int) desc

sys.allocation_units посмотри на total_pages. Каждый набор строк (раздел индекса) имеет 3 единицы распределения (DATA, SLOB и LOB), см. организация таблицы и индекса. Присоединяйтесь к sys.partitions чтобы получить object_id и index_id. Index_id 0-куча неупорядоченной таблицы, index id 1-кластеризованный индекс. Каждая таблица (индекс) имеет хотя бы одну секцию, если она не секционирована:

select object_name(p.object_id) as [name],
    object_schema_name(p.object_id) as [schema],
    i.name as [index],
    i.type_desc,
    au.type_desc,
    p.partition_number,
    p.rows,
    au.total_pages * 8 as [space (kb)]
from sys.allocation_units au
join sys.partitions p on au.container_id = p.partition_id
join sys.indexes i on p.object_id = i. object_id
    and i.index_id = p.index_id
order by [space (kb)] desc;

вы взглянули на Отчет Об Использовании Диска?

"чтобы просмотреть отчет, разверните папку управление, щелкните правой кнопкой мыши сбор данных, выберите отчеты, хранилище данных управления, а затем щелкните сводка использования диска"

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