$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 en SQL Server 2012.
Convenciones 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 este 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
Comentarios
$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 AdventureWorks2012;
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.
Para ejecutar este ejemplo, primero hay que ejecutar el script PartitionAW.sql en la base de datos de ejemplo AdventureWorks2012 . Para obtener más información, vea PartitioningScript.
USE AdventureWorks2012;
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 AdventureWorks2012 . Para obtener más información, vea PartitioningScript.
SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;