Se hai una tabella o un indice partizionato in SQL Server e vuoi controllare il tipo di parametro della funzione di partizione, puoi usare sys.partition_parameters
vista catalogo di sistema.
Questa vista restituisce una riga per ogni parametro di una funzione di partizione.
Il tipo di parametro deve corrispondere o essere convertibile in modo implicito nel tipo di dati della colonna di partizionamento nella tabella o nell'indice.
Esempio
Ecco un esempio che mostra le colonne restituite da sys.partition_parameters
visualizza.
SELECT * FROM sys.partition_parameters;
Risultato:
+---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+ | function_id | parameter_id | system_type_id | max_length | precision | scale | collation_name | user_type_id | |---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------| | 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 | +---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+
Ho solo una funzione di partizione, quindi viene restituita solo una riga.
Ecco di nuovo il risultato utilizzando l'output verticale (per evitare di dover scorrere lateralmente):
function_id | 65542 parameter_id | 1 system_type_id | 56 max_length | 4 precision | 10 scale | 0 collation_name | NULL user_type_id | 56
Ottieni il nome del tipo
I sys.partition_parameters
view in realtà non restituisce il nome del tipo. Restituisce l'ID del tipo. In realtà, restituisce l'ID del tipo sia del tipo di sistema che del tipo definito dall'utente.
Fortunatamente, possiamo usare il TYPE_NAME()
funzione per restituire il nome di ciascuno.
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;
Risultato (usando l'output verticale):
function_id | 65542 parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int
Restituisci il nome della funzione
Possiamo anche unirci a sys.partition_functions
view per restituire il nome della funzione invece del suo 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;
Risultato (usando l'output verticale):
name | MoviesPartitionFunction parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int