Jeśli masz partycjonowaną tabelę lub indeks w SQL Server i chcesz sprawdzić typ parametru funkcji partycji, możesz użyć sys.partition_parameters
widok katalogu systemowego.
Ten widok zwraca wiersz dla każdego parametru funkcji partycji.
Typ parametru powinien być zgodny lub niejawnie konwertowany na typ danych kolumny partycjonowania w tabeli lub indeksie.
Przykład
Oto przykład pokazujący kolumny zwrócone przez sys.partition_parameters
widok.
SELECT * FROM sys.partition_parameters;
Wynik:
+---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+ | function_id | parameter_id | system_type_id | max_length | precision | scale | collation_name | user_type_id | |---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------| | 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 | +---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+
Mam tylko jedną funkcję partycji, więc zwracany jest tylko jeden wiersz.
Oto wynik ponownie przy użyciu wyjścia pionowego (aby uniknąć konieczności przewijania na boki):
function_id | 65542 parameter_id | 1 system_type_id | 56 max_length | 4 precision | 10 scale | 0 collation_name | NULL user_type_id | 56
Pobierz nazwę typu
sys.partition_parameters
widok w rzeczywistości nie zwraca nazwy typu. Zwraca identyfikator typu. W rzeczywistości zwraca identyfikator typu zarówno typu systemu, jak i typu zdefiniowanego przez użytkownika.
Na szczęście możemy użyć TYPE_NAME()
funkcja zwracająca nazwę każdego z nich.
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;
Wynik (przy użyciu wyjścia pionowego):
function_id | 65542 parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int
Zwróć nazwę funkcji
Możemy również dołączyć do sys.partition_functions
view, aby zwrócić nazwę funkcji zamiast jej identyfikatora.
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;
Wynik (przy użyciu wyjścia pionowego):
name | MoviesPartitionFunction parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int