Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Retorna o número da partição no qual um conjunto de valores de coluna de particionamento pode ser mapeado para qualquer função de partição especificada.
Transact-SQL convenções de sintaxe
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 contra a qual um conjunto de valores de coluna de particionamento está sendo aplicado.
expressão
Uma expressão cujo tipo de dados deve corresponder ou ser implicitamente conversível para o tipo de dados de sua coluna de particionamento correspondente. Esse parâmetro também pode ser o nome de uma coluna de particionamento que atualmente participa do partition_function_name.
Tipos de devolução
int
Comentários
$PARTITION retorna um int valor entre 1 e o número de partições da função de partição.
$PARTITION retorna o número da partição para qualquer valor válido, independentemente de o valor existir atualmente em uma tabela particionada ou índice que usa a função de partição.
Exemplos
Um. Obter o número da partição para um conjunto de valores de coluna de particionamento
Este exemplo cria uma função de partição RangePF1 usando RANGE LEFT que particionará uma tabela ou índice em quatro partições.
$PARTITION é usado para determinar que o valor 10, representando a coluna de particionamento de RangePF1, seria colocado no 1 de partição da tabela.
CREATE PARTITION FUNCTION RangePF1(INT)
AS RANGE LEFT
FOR VALUES (10, 100, 1000);
GO
SELECT $PARTITION.RangePF1 (10);
GO
B. Obter o número de linhas em cada partição não vazia de uma tabela ou índice particionado
Este exemplo mostra como usar $PARTITION para retornar o número de linhas em cada partição da tabela que contém dados.
Observação
Para executar este exemplo, você deve primeiro criar a função de partição RangePF1 usando o código no exemplo anterior.
Crie um esquema de partição,
RangePS1, para a função de partiçãoRangePF1.CREATE PARTITION SCHEME RangePS1 AS PARTITION RangePF1 ALL TO ('PRIMARY'); GOCrie uma tabela,
dbo.PartitionTable, no esquema de partiçãoRangePS1comcol1como a coluna de particionamento.CREATE TABLE dbo.PartitionTable ( col1 INT PRIMARY KEY, col2 CHAR (20) ) ON RangePS1 (col1); GOInsira quatro linhas na tabela
dbo.PartitionTable. Estas linhas são inseridas em partições com base na função de partiçãoRangePF1definição:1e10ir para particionar1, enquanto500e1000ir para3.INSERT dbo.PartitionTable (col1, col2) VALUES (1, 'a row'), (10, 'another row'), (500, 'another row'), (1000, 'another row'); GOConsulte o
dbo.PartitionTablee usa$PARTITION.RangePF1(col1)na cláusulaGROUP BYpara consultar o número de linhas em cada partição que contém dados.SELECT $PARTITION.RangePF1 (col1) AS Partition, COUNT(*) AS [COUNT] FROM dbo.PartitionTable GROUP BY $PARTITION.RangePF1 (col1) ORDER BY Partition; GO
Aqui está o conjunto de resultados.
| Partição | CONTAGEM |
|---|---|
| 1 | 2 |
| 3 | 2 |
As linhas não são retornadas para o número de partição 2, que existe, mas não contém dados.
C. Retornar todas as linhas de uma partição de uma tabela ou índice particionado
O exemplo a seguir retorna todas as linhas que estão na partição 3 da tabela PartitionTable.
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;
Aqui está o conjunto de resultados.
| col1 | col2 |
|---|---|
500 |
outra linha |
1000 |
outra linha |