Как получить набор результатов всех таблиц в БД с использованием их дискового пространства - PullRequest
6 голосов
/ 05 января 2011

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

Ответы [ 3 ]

11 голосов
/ 05 января 2011
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
5 голосов
/ 05 января 2011

sys.allocation_units, посмотрите на total_pages.Каждый набор строк (раздел индекса) имеет 3 единицы выделения (DATA, SLOB и LOB), см. Организация таблиц и индексов .Присоединитесь к sys.partitions, чтобы получить object_id и index_id.Index_id 0 - это куча неупорядоченной таблицы, индекс 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;
0 голосов
/ 05 января 2011

Вы взглянули на Сводный отчет об использовании диска ?

"Чтобы просмотреть отчет, разверните папку« Управление », щелкните правой кнопкой мыши« Сбор данных »и выберите« Отчеты »., выберите Хранилище данных управления, а затем нажмите Сводка использования диска. *

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...