sql >> Databasteknik >  >> RDS >> Sqlserver

Kontrollera parametertypen för en partitionsfunktion i SQL Server (T-SQL)

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):

namn | MoviesPartitionFunctionparameter_id | 1Systemtyp | intmax_length | 4precision | 10 skala | 0kollationsnamn | NULLUanvändartyp | int
  1. Postgres:Distinkt men bara för en kolumn

  2. Hur Ceiling() fungerar i PostgreSQL

  3. Skapa och få åtkomst till OLTP-databaser och tabeller i minnet

  4. PDO få det sista ID:t insatt