我有 3 个数据文件用于 SQL Server 2005 中数据库的主文件组。是否可以确定特定索引驻留在哪个数据文件上,或者它们是否存在于文件组中的多个数据文件中?
问问题
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 回答