sql >> Database >  >> RDS >> Sqlserver

Controleer het parametertype van een partitiefunctie in SQL Server (T-SQL)

Als u een gepartitioneerde tabel of index in SQL Server hebt en u wilt het parametertype van de partitiefunctie controleren, kunt u de sys.partition_parameters gebruiken systeemcatalogusweergave.

Deze weergave retourneert een rij voor elke parameter van een partitiefunctie.

Het parametertype moet overeenkomen met of impliciet converteerbaar zijn naar het gegevenstype van de partitioneringskolom in de tabel of index.

Voorbeeld

Hier is een voorbeeld dat de kolommen toont die worden geretourneerd door de sys.partition_parameters bekijken.

SELECT * FROM sys.partition_parameters; 

Resultaat:

+---------------+----------------+------------- -----+--------------+-------------+---------+----- -------------+----------------+| functie_id | parameter_id | system_type_id | max_lengte | precisie | schaal | collatienaam | user_type_id ||---------------+----------------+-------------- ----+--------------+-------------+---------+------ ------------+----------------|| 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 |+---------------+----------------+-------------- ----+--------------+-------------+---------+------ ------------+----------------+

Ik heb maar één partitiefunctie en dus wordt er maar één rij geretourneerd.

Hier is het resultaat opnieuw met verticale uitvoer (om te voorkomen dat u zijwaarts hoeft te scrollen):

function_id | 65542parameter_id | 1system_type_id | 56max_lengte | 4precisie | 10schaal | 0collatienaam | NULLuser_type_id | 56

Haal de typenaam op

De sys.partition_parameters view geeft niet echt de typenaam terug. Het retourneert de type-ID. In feite retourneert het de type-ID van zowel het systeemtype als het door de gebruiker gedefinieerde type.

Gelukkig kunnen we de TYPE_NAME() . gebruiken functie om de naam van elk terug te geven.

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; 

Resultaat (met verticale uitvoer):

function_id | 65542parameter_id | 1Systeemtype | intmax_length | 4precisie | 10schaal | 0collatienaam | NULLGebruikerstype | int

Retourneer de functienaam

We kunnen ook lid worden van de sys.partition_functions weergave om de functienaam te retourneren in plaats van de 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; 

Resultaat (met verticale uitvoer):

naam | MoviesPartitionFunctionparameter_id | 1Systeemtype | intmax_length | 4precisie | 10schaal | 0collatienaam | NULLGebruikerstype | int
  1. Een macro uitvoeren vanaf een navigatieknop in Microsoft Access

  2. Postgres - FATAL:databasebestanden zijn niet compatibel met de server

  3. Haal de ID van een object uit de naam in SQL Server:OBJECT_ID()

  4. Mysql-volgorde op specifieke ID-waarden