Compartilhar via


$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 2014.

Aplica-se a: SQL Server (SQL Server 2008 à versão atual).

Ícone de vínculo de tópico 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.

Dica

Para executar esse 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 ;

Consulte também

Referência

CREATE PARTITION FUNCTION (Transact-SQL)