Hvis du har en partitioneret tabel eller et indeks i SQL Server, og du vil kontrollere parametertypen for partitionsfunktionen, kan du bruge sys.partition_parameters
systemkatalogvisning.
Denne visning returnerer en række for hver parameter i en partitionsfunktion.
Parametertypen skal matche eller være implicit konverterbar til datatypen for partitioneringskolonnen i tabellen eller indekset.
Eksempel
Her er et eksempel, der viser kolonnerne returneret af sys.partition_parameters
se.
SELECT * FROM sys.partition_parameters;
Resultat:
+---------------+----------------+------------- -----+--------------+----------------------- --------------+----------------+| funktions-id | parameter_id | system_type_id | max_længde | præcision | skala | samlingsnavn | user_type_id ||---------------+----------------+------------- ----+--------------+--------------+------------ ------------+----------------|| 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 |+---------------+----------------+------------- ----+--------------+--------------+------------ ------------+----------------+
Jeg har kun én partitionsfunktion, og derfor returneres kun én række.
Her er resultatet igen ved hjælp af lodret output (for at spare dig for at skulle rulle sidelæns):
funktions-id | 65542parameter_id | 1system_type_id | 56max_længde | 4præcision | 10 skala | 0sorteringsnavn | NULLuser_type_id | 56
Hent typenavnet
sys.partition_parameters
view returnerer faktisk ikke typenavnet. Det returnerer type-id'et. Faktisk returnerer den type-id'et for både systemtypen og den brugerdefinerede type.
Heldigvis kan du bruge TYPE_NAME()
funktion for at returnere navnet på hver.
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;
Resultat (ved hjælp af lodret output):
funktions-id | 65542parameter_id | 1Systemtype | intmax_length | 4præcision | 10 skala | 0sorteringsnavn | NULLUser Type | int
Returner funktionsnavnet
Vi kan også tilslutte os sys.partition_functions
view for at returnere funktionsnavnet i stedet for dets 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;
Resultat (ved hjælp af lodret output):