回复: partition function中的分区区间要和partition schema中的file g...楼
问过一些N人,在分区表里怎样知道某条记录属于哪个文件组,N人说,没有办法,做好当初创建分区函数和分区架构的语句的备份工作,到时候查询。
经过一番研究,发现其实可以通过语句来查询某条记录是属于哪个文件组的。针对6楼的例子,使用下面的语句就能得到想要的了:
create table textentinfo( file_id int, page_id int, pg_alloc int, ext_size int, object_id int, index_id int, partition_number int, partition_id bigint, iam_chain_type varchar(1000), pfs_bytes varbinary(1000))insert into textentinfoexec('dbcc extentinfo(demo,par_History)')goselect d.*,a.name as FileGroup_Name,b.name as File_Name,physical_name,c.partition_number from sys.filegroups a inner join sys.database_files bon a.data_space_id=b.data_space_id inner join textentinfo c on b.file_id=c.file_idinner join par_History d on c.partition_number=$PARTITION.fn_CLRQ(CLRQ)where c.object_id=object_id('par_History')执行结果如下:
/*
ID CLRQ FileGroup_Name File_Name physical_name partition_number
----------- ----------------------- --------------- ---------------------------------------------
1 2006-05-01 00:00:00.000 fg_CLRQ_1 f_CLRQ_1 C:\file1.NDF 1
2 2007-01-10 00:00:00.000 fg_CLRQ_2 f_CLRQ_2 C:\file2.NDF 2
3 2007-02-10 00:00:00.000 fg_CLRQ_3 f_CLRQ_3 C:\file3.NDF 3
4 2007-03-10 00:00:00.000 fg_CLRQ_4 f_CLRQ_4 C:\file4.NDF 4
5 2007-04-10 00:00:00.000 fg_CLRQ_5 f_CLRQ_5 C:\file5.NDF 5
6 2007-05-10 00:00:00.000 fg_CLRQ_6 f_CLRQ_6 C:\file6.NDF 6
7 2007-06-10 00:00:00.000 fg_CLRQ_7 f_CLRQ_7 C:\file7.NDF 7
(7 行受影响)
*/