Saya berharap untuk mendapatkan tampilan terperinci dari file database mana yang berisi unit alokasi mana untuk berbagai HoBT (baik yang selaras maupun tidak selaras) yang hidup dalam database.
Kueri yang selalu saya gunakan (lihat di bawah) telah membantu saya dengan baik sampai kami mulai membuat beberapa file data per filegroup dan saya hanya bisa mengetahui cara mendapatkan granular seperti pada level filegroup.
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;
Namun, kueri ini tidak akan berfungsi ketika ada beberapa file dalam sebuah grup file karena saya hanya bisa sejauh menghubungkan unit alokasi ke ruang data dan, pada akhirnya, sebuah grup file. Saya ingin tahu apakah ada DMV atau katalog lain yang saya lewatkan yang dapat saya gunakan untuk mengidentifikasi lebih lanjut file mana dalam filegroup yang berisi unit alokasi.
Pertanyaan di balik pertanyaan ini adalah bahwa saya mencoba untuk mengevaluasi efek aktual dari kompresi struktur yang dipartisi. Saya tahu saya bisa melakukan sebelum dan sesudah menggunakan FILEPROPERTY(FileName,'SpaceUsed')
untuk file dan sebelum dan sesudah sys.allocation_units.used_pages/128.
untuk mendapatkan informasi ini, tetapi latihan itu sendiri membuat saya bertanya-tanya apakah saya bisa mengidentifikasi file tertentu yang berisi unit alokasi tertentu.
Saya telah bermain-main dengan %%physloc%%
harapan itu bisa membantu, tetapi itu tidak cukup untuk mendapatkan apa yang saya cari. Tautan di bawah ini disediakan oleh Aaron Bertrand :