2

SQL Server 2005 のデータベースのプライマリ ファイル グループに 3 つのデータ ファイルがあります。特定のインデックスが存在するデータ ファイルを特定することはできますか?それともファイル グループ内の複数のデータ ファイルに存在しますか?

4

2 に答える 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 に答える