Om du har en partitionerad tabell eller index i SQL Server och du vill kontrollera parametertypen för partitionsfunktionen kan du använda sys.partition_parameters
systemkatalogvy.
Denna vy returnerar en rad för varje parameter i en partitionsfunktion.
Parametertypen ska matcha eller vara implicit konverterbar till datatypen för partitioneringskolumnen i tabellen eller indexet.
Exempel
Här är ett exempel som visar kolumnerna som returneras av sys.partition_parameters
visa.
SELECT * FROM sys.partition_parameters;
Resultat:
+---------------+----------------+------------ -----+--------------+-------------+--------+----- -------------+----------------+| funktions-id | parameter_id | system_type_id | max_längd | precision | skala | samlingsnamn | user_type_id ||---------------+----------------+------------- ----+--------------+--------------+--------+------ ------------+----------------|| 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 |+---------------+----------------+------- ----+--------------+--------------+--------+------ ------------+----------------+
Jag har bara en partitionsfunktion, så bara en rad returneras.
Här är resultatet igen med vertikal utmatning (för att du inte behöver rulla i sidled):
funktions-id | 65542parameter_id | 1system_typ_id | 56max_längd | 4precision | 10 skala | 0kollationsnamn | NULLuser_type_id | 56
Hämta typnamnet
sys.partition_parameters
view returnerar faktiskt inte typnamnet. Det returnerar typ-ID. Egentligen returnerar den typ-ID för både systemtypen och den användardefinierade typen.
Lyckligtvis kan vi använda TYPE_NAME()
funktion för att returnera namnet på varje.
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 (med vertikal utdata):
funktions-id | 65542parameter_id | 1Systemtyp | intmax_length | 4precision | 10 skala | 0kollationsnamn | NULLUanvändartyp | int
Återställ funktionsnamnet
Vi kan också gå med i sys.partition_functions
view för att returnera funktionsnamnet istället för dess 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 (med vertikal utdata):