$PARTITION (Transact-SQL)
Retorna o número da partição na qual um conjunto de valores de coluna de particionamento são mapeados para qualquer função de partição especificada no SQL Server 2012.
Convenções da sintaxe Transact-SQL
Sintaxe
[ database_name. ] $PARTITION.partition_function_name(expression)
Argumentos
database_name
É o nome do banco de dados que contém a função de partição.partition_function_name
É o nome de qualquer função de partição existente na qual um conjunto de valores de coluna de particionamento é aplicado.expression
É uma expressão cujo tipo de dados deve corresponder ou pode ser convertido implicitamente no tipo de dados de sua coluna de particionamento correspondente. expression também pode ser o nome de uma coluna de particionamento que atualmente participa de partition_function_name.
Tipos de retorno
int
Comentários
$PARTITION retorna um valor int entre 1 e o número de partições da função de partição.
$PARTITION retorna o número de partição para qualquer valor válido, independentemente de o valor existir atualmente em um índice ou uma tabela particionada que use a função de partição.
Exemplos
A.Obtendo o número de partições para um conjunto de valores de coluna de particionamento
O exemplo a seguir cria uma função de partição RangePF1 que dividirá uma tabela ou índice em quatro partições. $PARTITION é usado para determinar se o valor 10, representando a coluna de particionamento de RangePF1, será colocado na partição 1 da tabela.
USE AdventureWorks2012;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE FOR VALUES (10, 100, 1000) ;
GO
SELECT $PARTITION.RangePF1 (10) ;
GO
B.Obtendo o número de linhas em cada partição não vazia de um índice ou tabela particionada
O exemplo a seguir retorna o número de linhas em cada partição de tabela TransactionHistory que contém dados. A tabela TransactionHistory usa a função de partição TransactionRangePF1 e é particionada na coluna TransactionDate.
Para executar este exemplo, você deve primeiro executar o script PartitionAW.sql no banco de dados de amostra AdventureWorks2012 . Para obter mais informações, consulte 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.Retornando todas as linhas de uma partição de um índice ou tabela particionada
O exemplo a seguir retorna todas as linhas que estão na partição 5 da tabela TransactionHistory.
Observação |
---|
Para executar este exemplo, você deve primeiro executar o script PartitionAW.sql no banco de dados de amostra AdventureWorks2012 . Para obter mais informações, consulte PartitioningScript. |
SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;