Om du har en partitionerad tabell i SQL Server och du nu vill köra en fråga som inkluderar partitionsnumret på varje rad som returneras av frågan, kan du använda $PARTITION
systemfunktion för att göra just det.
$PARTITION
funktion returnerar partitionsnumret till vilket en uppsättning partitioneringskolumnvärden skulle mappas för en specificerad partitionsfunktion.
Du kan därför använda den i din SELECT
för att returnera den partition som varje rad tillhör.
Exempel
Här är ett exempel att visa.
SELECT
CatId,
CatName,
$PARTITION.CatsPartitionFunction(CatId) AS [Partition]
FROM Cats;
Resultat:
+---------+-------------+-------------+ | CatId | CatName | Partition | |---------+-------------+-------------| | 1 | Meow | 2 | | 2 | Fluffy | 2 | | 3 | Scratch | 2 | | 4 | Bulldog | 2 | | 5 | King George | 2 | | 6 | Sharp | 3 | | 7 | Fritz | 3 | | 8 | Garfield | 3 | | 9 | Boss | 3 | +---------+-------------+-------------+
I det här fallet är raderna fördelade mellan partitionerna 2 och 3.
Partition 1 är tom (liksom partition 4), i enlighet med Microsofts rekommendation att lämna partitioner i båda ändarna tomma, för att eliminera datarörelse i händelse av att partitioner delas eller slås samman.