[SQL Server] Vérifier Fonctions Partitionnement

  • Imprimer

SELECT
PScheme = ps.name,
PFunction = pf.name,
Boundary = dds.destination_id,
BoundaryValue = prv.value,
[FileGroup] = ds.name
FROM sys.partition_schemes AS ps
INNER JOIN sys.partition_functions AS pf ON ps.function_id = pf.function_id
INNER JOIN sys.destination_data_spaces AS dds ON ps.data_space_id = dds.partition_scheme_id
INNER JOIN sys.partition_range_values AS prv ON dds.destination_id = pf.boundary_value_on_right + isnull(prv.boundary_id,0) AND prv.function_id = pf.function_id
JOIN sys.data_spaces ds on dds.data_space_id=ds.data_space_id
where pf.name='PF_FonctionPartitionnement';


--Afficher toutes les partitions pour une table spécifiée

SELECT DISTINCT o.name as table_name, rv.value as partition_range, f.name AS PartitionFunction,
fg.name as file_groupName, p.partition_number, p.rows as number_of_rows
FROM sys.partitions p
INNER JOIN sys.indexes i ON p.object_id = i.object_id AND p.index_id = i.index_id
INNER JOIN sys.objects o ON p.object_id = o.object_id
INNER JOIN sys.system_internals_allocation_units au ON p.partition_id = au.container_id
INNER JOIN sys.partition_schemes ps ON ps.data_space_id = i.data_space_id
INNER JOIN sys.partition_functions f ON f.function_id = ps.function_id
INNER JOIN sys.destination_data_spaces dds ON dds.partition_scheme_id = ps.data_space_id AND dds.destination_id = p.partition_number
INNER JOIN sys.filegroups fg ON dds.data_space_id = fg.data_space_id
LEFT OUTER JOIN sys.partition_range_values rv ON f.function_id = rv.function_id AND p.partition_number = rv.boundary_id
WHERE o.name = 'MaTable'