$PARTITION (Transact-SQL)
Restituisce il numero della partizione a cui verrebbe mappato un set di valori di una colonna di partizionamento per una funzione di partizione specificata.
Sintassi
[ database_name. ] $PARTITION.partition_function_name(expression)
Argomenti
database_name
Nome del database contenente la funzione di partizione.partition_function_name
Nome di una funzione di partizione esistente in base alla quale viene applicato un set di valori di una colonna di partizionamento.expression
Espressione il cui tipo di dati deve corrispondere al tipo di dati della colonna di partizionamento corrispondente o deve poter essere convertito in modo implicito in tale tipo di dati. expression può essere anche il nome di una colonna di partizionamento che partecipa a partition_function_name.
Tipi restituiti
int
Osservazioni
$PARTITION restituisce un valore int compreso tra 1 e il numero di partizioni della funzione di partizione.
$PARTITION restituisce il numero di partizione per qualsiasi valore valido, indipendentemente dal fatto che il valore esista in una tabella o in un dice partizionato che utilizza la funzione di partizione.
Esempi
A. Recupero del numero di partizione per un set di valori di colonne di partizionamento
Nell'esempio seguente viene creata una funzione di partizione RangePF1 che esegue il partizionamento di una tabella o di un indice in quattro partizioni.. $PARTITION consente di stabilire che il valore 10, che rappresenta la colonna di partizionamento di RangePF1, verrebbe inserito nella partizione 1 della tabella.
USE AdventureWorks ;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE FOR VALUES (10, 100, 1000) ;
GO
SELECT $PARTITION.RangePF1 (10) ;
GO
B. Recupero del numero di righe di ogni partizione non vuota di una tabella o di un indice partizionato
Nell'esempio seguente viene restituito il numero di righe di ogni partizione della tabella TransactionHistory contenente dati. La tabella TransactionHistory utilizza la funzione di partizione TransactionRangePF1 ed è partizionata in base alla colonna TransactionDate.
[!NOTA]
Per eseguire l'esempio è necessario innanzitutto eseguire lo script PartitionAW.sql nel database di esempio AdventureWorks. Per ulteriori informazioni, vedere 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. Restituzione di tutte le righe di una partizione di una tabella o di un indice partizionato
Nell'esempio seguente vengono restituite tutte le righe incluse nella partizione 5 della tabella TransactionHistory.
[!NOTA]
Per eseguire l'esempio è necessario innanzitutto eseguire lo script PartitionAW.sql nel database di esempio AdventureWorks. Per ulteriori informazioni, vedere Readme_PartitioningScript.
SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;