Я сподівався отримати детальне уявлення про те, які файли баз даних містять одиниці розподілу для різних HoBT (як вирівняні, так і нерівні), що живуть у базі даних.
Запит, який я завжди використовував (див. Нижче), мені добре служив, поки ми не почали створювати декілька файлів даних для кожної файлової групи, і я можу лише зрозуміти, як отримати настільки детальний, як рівень файлової групи.
select
SchemaName = sh.name,
TableName = t.name,
IndexName = i.name,
PartitionNumber = p.partition_number,
IndexID = i.index_id,
IndexDataspaceID = i.data_space_id,
AllocUnitDataspaceID = au.data_space_id,
PartitionRows = p.rows
from sys.allocation_units au
join sys.partitions p
on au.container_id = p.partition_id
join sys.indexes i
on i.object_id = p.object_id
and i.index_id = p.index_id
join sys.tables t
on p.object_id = t.object_id
join sys.schemas sh
on t.schema_id = sh.schema_id
where sh.name != 'sys'
and au.type = 2
union all
select
sh.name,
t.name,
i.name,
p.partition_number,
i.index_id,
i.data_space_id,
au.data_space_id,
p.rows
from sys.allocation_units au
join sys.partitions p
on au.container_id = p.hobt_id
join sys.indexes i
on i.object_id = p.object_id
and i.index_id = p.index_id
join sys.tables t
on p.object_id = t.object_id
join sys.schemas sh
on t.schema_id = sh.schema_id
where sh.name != 'sys'
and au.type in (1,3)
order by t.name, i.index_id,p.partition_number;
Однак цей запит не працюватиме, коли у групі файлів є декілька файлів, оскільки я можу дістати лише так, щоб відновити одиницю розподілу до простору даних і, зрештою, групу файлів. Мені хотілося б дізнатися, чи є ще один DMV або каталог, який мені не вистачає, і я можу використати для подальшого визначення того, який файл у групі файлів містить одиницю розподілу.
Питання, що стоїть за цим питанням, полягає в тому, що я намагаюся оцінити фактичний ефект стискання перегороджених конструкцій. Я знаю, що я можу зробити до і після використання FILEPROPERTY(FileName,'SpaceUsed')
для файлу та перед і після, sys.allocation_units.used_pages/128.
щоб отримати цю інформацію, але сама вправа змусила мене задуматися, чи можу я визначити конкретний файл, який містить певний блок розподілу.
Я возився з %%physloc%%
надією, що це може допомогти, але це не зовсім мені приносить те, чого я прагну. Посилання нижче були надані Аароном Бертрандом :