SQL Server 2005 のデータベースのプライマリ ファイル グループに 3 つのデータ ファイルがあります。特定のインデックスが存在するデータ ファイルを特定することはできますか?それともファイル グループ内の複数のデータ ファイルに存在しますか?
質問する
363 次
2 に答える
2
select object_name(i.id) as TableName
, i.name as IndexName
, fg.name as FilegroupName
, df.name as FileName
, df.physical_name as FilePhysicalName
from sys.sysindexes i
join sys.filegroups fg
on fg.data_space_id = i.groupid
join sys.database_files df
on df.data_space_id = fg.data_space_id
join sys.data_spaces ds
on ds.data_space_id = fg.data_space_id
where objectproperty(i.id,'IsUserTable') = 1
于 2012-10-16T17:16:18.603 に答える
0
タブケやインデックスなどのオブジェクトは、ファイルではなくファイル グループに基づいて構築されます。インデックスは、おそらくファイル グループ内のすべてのファイルに存在します。ファイルが追加されたためにファイル割り当てホットスポットが発生した場合など、これが当てはまらない例外的なケースがいくつかありますが、SQL Server はファイルに対して比例フィル アルゴリズムを使用し、それらを均等にフィルします。
実行してみるとよくわかります
DBCC IND('myDatabase','myTable',2)
2 は、関心のあるインデックスの indexID です。
これにより、各ページのファイルIDが表示されます
于 2012-10-16T17:25:59.460 に答える