Si vous avez une table ou un index partitionné dans SQL Server et que vous souhaitez vérifier le type de paramètre de la fonction de partition, vous pouvez utiliser le sys.partition_parameters
vue du catalogue système.
Cette vue renvoie une ligne pour chaque paramètre d'une fonction de partition.
Le type de paramètre doit correspondre ou être implicitement convertible en type de données de la colonne de partitionnement dans la table ou l'index.
Exemple
Voici un exemple qui montre les colonnes renvoyées par le sys.partition_parameters
vue.
SELECT * FROM sys.partition_parameters;
Résultat :
+---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+ | function_id | parameter_id | system_type_id | max_length | precision | scale | collation_name | user_type_id | |---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------| | 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 | +---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+
Je n'ai qu'une seule fonction de partition, et donc une seule ligne est renvoyée.
Voici à nouveau le résultat en utilisant la sortie verticale (pour vous éviter d'avoir à faire défiler latéralement) :
function_id | 65542 parameter_id | 1 system_type_id | 56 max_length | 4 precision | 10 scale | 0 collation_name | NULL user_type_id | 56
Obtenir le nom du type
Les sys.partition_parameters
view ne renvoie pas réellement le nom du type. Il renvoie l'ID de type. En fait, il renvoie l'ID de type du type système et du type défini par l'utilisateur.
Heureusement, vous pouvez utiliser le TYPE_NAME()
fonction pour renvoyer le nom de chacun.
SELECT
function_id,
parameter_id,
TYPE_NAME(system_type_id) AS [System Type],
max_length,
precision,
scale,
collation_name,
TYPE_NAME(user_type_id) AS [User Type]
FROM sys.partition_parameters;
Résultat (en utilisant la sortie verticale) :
function_id | 65542 parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int
Renvoyer le nom de la fonction
Nous pouvons également joindre les sys.partition_functions
view pour renvoyer le nom de la fonction au lieu de son ID.
SELECT
pf.name,
pp.parameter_id,
TYPE_NAME(pp.system_type_id) AS [System Type],
pp.max_length,
pp.precision,
pp.scale,
pp.collation_name,
TYPE_NAME(pp.user_type_id) AS [User Type]
FROM sys.partition_parameters pp
INNER JOIN sys.partition_functions pf
ON pf.function_id = pp.function_id;
Résultat (en utilisant la sortie verticale) :
name | MoviesPartitionFunction parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int