Как получить результирующий набор всех таблиц в БД с использованием дискового пространства
есть ли запрос 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, и тенденций роста для файлов данных и журналов для каждого из них база данных.
- Сводная таблица отображает начальный размер (в мегабайтах) и текущий размер всех баз данных установлен на сервере, который отслеживает сборщик данных.
- тенденция и средний рост информации отображается графически и численно для файлов данных и журналов.