Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Verifique o tipo de parâmetro de uma função de partição no SQL Server (T-SQL)


Se você tem uma tabela ou índice particionado no SQL Server e deseja verificar o tipo de parâmetro da função de partição, pode usar o sys.partition_parameters visualização do catálogo do sistema.

Essa exibição retorna uma linha para cada parâmetro de uma função de partição.

O tipo de parâmetro deve corresponder ou ser implicitamente conversível para o tipo de dados da coluna de particionamento na tabela ou índice.

Exemplo


Aqui está um exemplo que mostra as colunas retornadas pelo sys.partition_parameters visualizar.
SELECT * FROM sys.partition_parameters;

Resultado:
+---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+
| function_id   | parameter_id   | system_type_id   | max_length   | precision   | scale   | collation_name   | user_type_id   |
|---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------|
| 65542         | 1              | 56               | 4            | 10          | 0       | NULL             | 56             |
+---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+

Eu tenho apenas uma função de partição e, portanto, apenas uma linha é retornada.

Aqui está o resultado novamente usando a saída vertical (para evitar que você tenha que rolar para os lados):
function_id    | 65542
parameter_id   | 1
system_type_id | 56
max_length     | 4
precision      | 10
scale          | 0
collation_name | NULL
user_type_id   | 56

Obter o nome do tipo


Os sys.partition_parameters view não retorna o nome do tipo. Ele retorna o ID do tipo. Na verdade, ele retorna o ID do tipo do tipo de sistema e do tipo definido pelo usuário.

Felizmente, podemos usar o TYPE_NAME() função para retornar o nome de cada um.
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;

Resultado (usando saída vertical):
function_id    | 65542
parameter_id   | 1
System Type    | int
max_length     | 4
precision      | 10
scale          | 0
collation_name | NULL
User Type      | int

Retorne o nome da função


Também podemos juntar as sys.partition_functions view para retornar o nome da função em vez de seu 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;

Resultado (usando saída vertical):
name           | MoviesPartitionFunction
parameter_id   | 1
System Type    | int
max_length     | 4
precision      | 10
scale          | 0
collation_name | NULL
User Type      | int