Ben bir veritabanı içinde yaşayan çeşitli HoBT (hizalanmış ve hizalanmamış) için hangi tahsis birimleri içeren hangi veritabanı dosyaları içeren ayrıntılı bir görünüm elde etmek umuyordum.
Her zaman kullandığım sorgu (aşağıya bakın), dosya grubu başına birden çok veri dosyası oluşturmaya başlayana kadar bana iyi hizmet etti ve ben sadece dosya grubu seviyesi kadar ayrıntılı nasıl elde edebileceğimi anlayabiliyorum.
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;
Ancak, yalnızca bir ayırma birimi bir veri alanı ve nihayetinde bir dosya grubuyla ilişkilendirmek kadar alabilirim çünkü bir dosya grubunda birden çok dosya olduğunda bu sorgu çalışmaz. Dosya grubundaki hangi dosyanın bir ayırma birimi içerdiğini daha iyi tanımlamak için kullanabileceğim başka bir DMV veya katalog olup olmadığını bilmek istiyorum.
Bu sorunun arkasındaki soru, bölünmüş yapıları sıkıştırmanın gerçek etkilerini değerlendirmeye çalışıyorum. Bu bilgileri almak FILEPROPERTY(FileName,'SpaceUsed')
için önce ve sonra dosya ve önce ve sonra kullanarak yapabileceğimi biliyorum sys.allocation_units.used_pages/128.
, ama alıştırma bana belirli bir ayırma birimi içeren belirli bir dosyayı tanımlayabilir miyim merak yaptı.
Yardımcı %%physloc%%
olabileceği umuduyla uğraşıyordum , ama aradığım şeyi tam olarak anlamıyor. Aşağıdaki bağlantılar Aaron Bertrand tarafından sağlanmıştır :