$PARTITION (Transact-SQL)

Devuelve el número de partición al que se asignaría un conjunto de valores de columnas de partición para cualquier función de partición especificada.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

[ database_name. ] $PARTITION.partition_function_name(expression)

Argumentos

  • database_name
    Es el nombre de la base de datos que contiene la función de partición.

  • partition_function_name
    Es el nombre de cualquier función de partición existente con la que se está aplicando un conjunto de valores de columnas de partición.

  • expression
    Es una expresión cuyo tipo de datos debe coincidir con el tipo de datos de su columna de partición correspondiente o ser convertible en éste de forma implícita. expression también puede ser el nombre de una columna de partición que participa en ese momento en partition_function_name.

Tipos de valor devueltos

int

Notas

$PARTITION devuelve un valor int entre 1 y el número de particiones de la función de partición.

$PARTITION devuelve el número de partición de cualquier valor válido, independientemente de si el valor existe en ese momento en una tabla o índice con particiones que utilice la función de partición.

Ejemplos

A. Obtener el número de partición de un conjunto de valores de columnas de partición

En el siguiente ejemplo se crea una función de partición RangePF1 que realizará cuatro particiones en una tabla o un índice. $PARTITION se utiliza para determinar que el valor 10, que representa la columna de partición de RangePF1, se colocaría en la partición 1 de la tabla.

USE AdventureWorks ;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE FOR VALUES (10, 100, 1000) ;
GO
SELECT $PARTITION.RangePF1 (10) ;
GO

B. Obtener el número de filas de cada partición no vacía de una tabla o un índice con particiones

En el siguiente ejemplo se devuelve el número de filas de cada partición de la tabla TransactionHistory que contiene datos. La tabla TransactionHistory utiliza la función de partición TransactionRangePF1. Además, se crean particiones en la columna TransactionDate.

[!NOTA]

Para ejecutar este ejemplo, primero hay que ejecutar el script PartitionAW.sql en la base de datos de ejemplo AdventureWorks. Para obtener más información, vea Readme_PartitioningScript.

USE AdventureWorks ;
GO
SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition, 
COUNT(*) AS [COUNT] FROM Production.TransactionHistory 
GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)
ORDER BY Partition ;
GO

C. Devolver todas las filas de una partición de una tabla o un índice con particiones

En el siguiente ejemplo se devuelven todas las filas que se encuentran en la partición 5 de la tabla TransactionHistory.

[!NOTA]

Para ejecutar este ejemplo, primero hay que ejecutar el script PartitionAW.sql en la base de datos de ejemplo AdventureWorks. Para obtener más información, vea Readme_PartitioningScript.

SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;