どのデータベースファイルに、データベース内に存在するさまざまな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%%
それが助けになることを望んでいじりましたが、それは私が探しているものを私にはまったく得られません。以下のリンクはAaron Bertrandによって提供されました。