Ако имате разделена таблица или индекс в SQL Server и искате да проверите типа параметър на функцията за дял, можете да използвате sys.partition_parameters
изглед на системния каталог.
Този изглед връща ред за всеки параметър на функция на дял.
Типът на параметъра трябва да съвпада или да бъде имплицитно конвертируем в типа данни на колоната за разделяне в таблицата или индекса.
Пример
Ето пример, който показва колоните, върнати от sys.partition_parameters
изглед.
SELECT * FROM sys.partition_parameters;
Резултат:
+---------------+----------------+------------ -----+--------------+------------+--------+----- ------------+----------------+| функция_идентификатор | parameter_id | system_type_id | максимална_дължина | прецизност | мащаб | име на съпоставяне | user_type_id ||--------------+----------------+-------------- ----+--------------+------------+--------+------ ------------+----------------|| 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 |+--------------+----------------+-------------- ----+--------------+------------+--------+------ ------------+----------------+
Имам само една функция за дялове и така се връща само един ред.
Ето резултата отново с помощта на вертикален изход (за да ви спести от необходимостта да превъртате настрани):
идентификатор_функция | 65542 parameter_id | 1system_type_id | 56max_length | 4прецизност | 10 скала | 0име_на_колекция | NULLuser_type_id | 56
Вземете името на типа
sys.partition_parameters
view всъщност не връща името на типа. Връща идентификатора на типа. Всъщност той връща идентификатора на типа както на системния тип, така и на дефинирания от потребителя тип.
За щастие можем да използваме TYPE_NAME()
функция за връщане на името на всеки.
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;
Резултат (с помощта на вертикален изход):
идентификатор_функция | 65542 parameter_id | 1Тип на системата | intmax_length | 4прецизност | 10 скала | 0име_на_колекция | NULLU тип потребител | int
Върнете името на функцията
Можем също да се присъединим към sys.partition_functions
view, за да върне името на функцията вместо нейния идентификатор.
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;
Резултат (с помощта на вертикален изход):
<предварително име | MoviesPartitionFunctionparameter_id | 1Тип на системата | intmax_length | 4прецизност | 10 скала | 0име_на_колекция | NULLU тип потребител | int