Advertisements
Code to view the partition table data.
use Test_Tbl_Partition
go
/*
-- find no.of partition table
select object_schema_name(i.object_id) as [schema],
object_name(i.object_id) as [object],
i.name as [index],
s.name as [partition_scheme]
from sys.indexes i
join sys.partition_schemes s on i.data_space_id = s.data_space_id
*/
go
SELECT
ISNULL(quotename(ix.name),'Heap') as IndexName
,ix.type_desc as type
,prt.partition_number
,case when ix.index_id < 2 then prt.rows else 0 END as Rows
,cast (rv.value as datetime2(7)) as [Upper_Boundary]
,prt.data_compression_desc
,ps.name as PartitionScheme
,pf.name as PartitionFunction
,fg.name as FilegroupName
,au.TotalMB
,au.UsedMB
,case when pf.boundary_value_on_right = 1 then 'less than value column' when pf.boundary_value_on_right is null then '' else 'less than or equal to value column' End as Comparison
,fg.name as FileGroup
FROM sys.partitions prt
inner join sys.indexes ix
on ix.object_id = prt.object_id and
ix.index_id = prt.index_id
inner join sys.data_spaces ds
on ds.data_space_id = ix.data_space_id
left join sys.partition_schemes ps
on ps.data_space_id = ix.data_space_id
left join sys.partition_functions pf
on pf.function_id = ps.function_id
left join sys.partition_range_values rv
on rv.function_id = pf.function_id AND
rv.boundary_id = prt.partition_number
left join sys.destination_data_spaces dds
on dds.partition_scheme_id = ps.data_space_id AND
dds.destination_id = prt.partition_number
left join sys.filegroups fg
on fg.data_space_id = ISNULL(dds.data_space_id,ix.data_space_id)
inner join (select str(sum(total_pages)*8./1024,10,2) as [TotalMB]
,str(sum(used_pages)*8./1024,10,2) as [UsedMB]
,container_id
from sys.allocation_units
group by container_id) au
on au.container_id = prt.partition_id
WHERE prt.OBJECT_ID like object_id(N'[dbo].[tbl_partition_test]')
--where prt.OBJECT_ID = object_id('C1810429.STYTOTAL_RAW_Intermediate_Staging')
and ix.type_desc in ('heap','CLUSTERED')
order by prt.partition_number,ISNULL(quotename(ix.name),'Heap')
/*
-- min nd max
select min([Date_Col]) as [Min_Date_Stored_PS_per_Year],max([Date_Col]) as [Max_Date_Stored_PS_per_Year] , count([Date_Col])as [No_of_Rows],
$partition.PF_myDateRange([Date_Col]) as [partition]
from [dbo].[tbl_partition_test]
group by $partition.PF_myDateRange([Date_Col])
select [Date_Col] , $partition.PF_myDateRange([Date_Col]) as [partition]
from [tbl_partition_test]
where $partition.PF_myDateRange([Date_Col]) in (6)
order by 1
*/