Si tiene una tabla o índice particionado en SQL Server y desea verificar el tipo de parámetro de la función de partición, puede usar sys.partition_parameters
vista del catálogo del sistema.
Esta vista devuelve una fila para cada parámetro de una función de partición.
El tipo de parámetro debe coincidir o ser implícitamente convertible al tipo de datos de la columna de partición en la tabla o índice.
Ejemplo
Aquí hay un ejemplo que muestra las columnas devueltas por sys.partition_parameters
ver.
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 | +---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+
Solo tengo una función de partición, por lo que solo se devuelve una fila.
Aquí está el resultado nuevamente usando la salida vertical (para evitar tener que desplazarse hacia los 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
Obtener el nombre del tipo
Los sys.partition_parameters
view en realidad no devuelve el nombre del tipo. Devuelve el ID de tipo. En realidad, devuelve el ID de tipo tanto del tipo de sistema como del tipo definido por el usuario.
Afortunadamente, podemos usar el TYPE_NAME()
función para devolver el nombre de cada uno.
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 salida vertical):
function_id | 65542 parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int
Devolver el nombre de la función
También podemos unirnos a sys.partition_functions
view para devolver el nombre de la función en lugar de su 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 salida vertical):
name | MoviesPartitionFunction parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int