Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Überprüfen Sie den Parametertyp einer Partitionsfunktion in SQL Server (T-SQL)

Wenn Sie eine partitionierte Tabelle oder einen Index in SQL Server haben und den Parametertyp der Partitionsfunktion überprüfen möchten, können Sie die sys.partition_parameters verwenden Systemkatalogansicht.

Diese Ansicht gibt eine Zeile für jeden Parameter einer Partitionsfunktion zurück.

Der Parametertyp sollte mit dem Datentyp der Partitionierungsspalte in der Tabelle oder im Index übereinstimmen oder implizit in diesen konvertierbar sein.

Beispiel

Hier ist ein Beispiel, das die von sys.partition_parameters zurückgegebenen Spalten zeigt ansehen.

SELECT * FROM sys.partition_parameters; 

Ergebnis:

+----------+---------------+------------ -----+--------------+------------+---------+----- -------------+---------------+| Funktions-ID | parameter_id | system_type_id | max_länge | Präzision | Maßstab | Sortierungsname | user_type_id ||---+----------------+-------------- ----+--------------+------------+---------+------ -------------+---------------|| 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 |+----------+----------------+------------- ----+--------------+------------+---------+------ -------------+---------------+

Ich habe nur eine Partitionsfunktion und daher wird nur eine Zeile zurückgegeben.

Hier ist das Ergebnis noch einmal mit vertikaler Ausgabe (um Ihnen das seitliche Scrollen zu ersparen):

Funktions-ID | 65542parameter_id | 1system_type_id | 56max_länge | 4Präzision | Maßstab 10 | 0sortierungsname | NULLuser_type_id | 56

Erhalten Sie den Typnamen

Die sys.partition_parameters view gibt nicht wirklich den Typnamen zurück. Es gibt die Typ-ID zurück. Tatsächlich gibt es die Typ-ID sowohl des Systemtyps als auch des benutzerdefinierten Typs zurück.

Glücklicherweise können wir den TYPE_NAME() verwenden Funktion, um den Namen von jedem zurückzugeben.

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; 

Ergebnis (bei vertikaler Ausgabe):

Funktions-ID | 65542parameter_id | 1Systemtyp | intmax_länge | 4Präzision | Maßstab 10 | 0sortierungsname | NULLBenutzertyp | int

Funktionsnamen zurückgeben

Wir können auch den sys.partition_functions beitreten view, um den Funktionsnamen statt seiner ID zurückzugeben.

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; 

Ergebnis (bei vertikaler Ausgabe):

| MoviesPartitionFunctionparameter_id | 1Systemtyp | intmax_länge | 4Präzision | Maßstab 10 | 0sortierungsname | NULLBenutzertyp | int