2012-10-16 3 views
2

SQL Server 2005에서 데이터베이스의 주 파일 그룹에 대해 3 개의 데이터 파일이 있습니다. 특정 인덱스가있는 데이터 파일을 결정할 수 있습니까? 아니면 둘 이상의 파일에 살고 있습니까? 파일 그룹 내의 데이터 파일은 무엇입니까?인덱스의 데이터 파일을 반환하는 tsql

답변

0

tabkes 및 인덱스와 같은 개체는 파일이 아니라 파일 그룹으로 작성됩니다. 색인은 파일 그룹 내의 모든 파일에있을 가능성이 큽니다. 더 많은 파일이 추가되었거나 파일 할당 핫스팟 등을 발생시키는 경우와 같이 SQL Server가 파일에 비례 필 알고리즘을 사용하여 균등하게 채우는 경우와 같이 몇 가지 예외가 있습니다. 당신이 당신이 관심있는 인덱스의 indexID입니다

DBCC IND('myDatabase','myTable',2) 

을 실행하여 확실하게 볼 수 있습니다

.

이 당신에게 각 페이지의 FileID에 표시됩니다

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