Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Проверете типа на параметъра на функцията на дял в SQL Server (T-SQL)

Ако имате разделена таблица или индекс в 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
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Основи за вътрешно присъединяване на SQL Server с примери

  2. SQL Server, Как да задам автоматично увеличение след създаване на таблица без загуба на данни?

  3. Как мога да извлека списък с параметри от съхранена процедура в SQL Server

  4. Transactionscope хвърля изключение, тази платформа не поддържа разпределени транзакции при отваряне на обект за връзка

  5. Как да използвате свойството IDENTITY() в SQL Server