Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
Gibt die Partitionsnummer zurück, in der eine Reihe von Partitionierungsspaltenwerten für jede angegebene Partitionsfunktion zugeordnet werden kann.
Transact-SQL-Syntaxkonventionen
Syntax
[ database_name. ] $PARTITION.partition_function_name(expression)
Argumente
database_name
Der Name der Datenbank, die die Partitionsfunktion enthält.
partition_function_name
Der Name einer vorhandenen Partitionsfunktion, auf die eine Reihe von Partitionierungsspaltenwerten angewendet wird.
expression
Ein Ausdruck, dessen Datentyp entweder übereinstimmen oder implizit in den Datentyp der entsprechenden Partitionierungsspalte wandeln muss. Dieser Parameter kann auch der Name einer Partitionierungsspalte sein, die derzeit an partition_function_namebeteiligt ist.
Rückgabetypen
int
Bemerkungen
$PARTITION gibt einen int Wert zwischen 1 und der Anzahl der Partitionsfunktionen zurück.
$PARTITION gibt die Partitionsnummer für jeden gültigen Wert zurück, unabhängig davon, ob der Wert derzeit in einer partitionierten Tabelle oder einem Index vorhanden ist, die die Partitionsfunktion verwendet.
Beispiele
A. Abrufen der Partitionsnummer für eine Gruppe von Partitionierungsspaltenwerten
In diesem Beispiel wird die Partitionsfunktion RangePF1 mit RANGE LEFT erstellt, die eine Tabelle oder einen Index in vier Partitionen partitioniert.
$PARTITION wird verwendet, um zu bestimmen, dass der Wert 10, der die Partitionierungsspalte von RangePF1darstellt, in partitions 1 der Tabelle eingefügt würde.
CREATE PARTITION FUNCTION RangePF1(INT)
AS RANGE LEFT
FOR VALUES (10, 100, 1000);
GO
SELECT $PARTITION.RangePF1 (10);
GO
B. Abrufen der Anzahl von Zeilen in jeder nicht leeren Partition einer partitionierten Tabelle oder eines partitionierten Index
In diesem Beispiel wird gezeigt, wie Sie mit $PARTITION die Anzahl der Zeilen in jeder Partition der Tabelle zurückgeben, die Daten enthalten.
Hinweis
Um dieses Beispiel auszuführen, müssen Sie zuerst die Partitionsfunktion RangePF1 mithilfe des Codes im vorherigen Beispiel erstellen.
Erstellen Sie ein Partitionsschema
RangePS1für die PartitionsfunktionRangePF1.CREATE PARTITION SCHEME RangePS1 AS PARTITION RangePF1 ALL TO ('PRIMARY'); GOErstellen Sie eine Tabelle
dbo.PartitionTableimRangePS1Partitionsschema mitcol1als Partitionsspalte.CREATE TABLE dbo.PartitionTable ( col1 INT PRIMARY KEY, col2 CHAR (20) ) ON RangePS1 (col1); GOFügen Sie vier Zeilen in die
dbo.PartitionTableTabelle ein. Diese Zeilen werden basierend auf der PartitionsfunktionRangePF1Definition in Partitionen eingefügt:1und10zu Partition1wechseln, während500und1000zu3wechseln.INSERT dbo.PartitionTable (col1, col2) VALUES (1, 'a row'), (10, 'another row'), (500, 'another row'), (1000, 'another row'); GOAbfragen des
dbo.PartitionTableund verwendet$PARTITION.RangePF1(col1)in derGROUP BY-Klausel, um die Anzahl der Zeilen in jeder Partition abzufragen, die Daten enthält.SELECT $PARTITION.RangePF1 (col1) AS Partition, COUNT(*) AS [COUNT] FROM dbo.PartitionTable GROUP BY $PARTITION.RangePF1 (col1) ORDER BY Partition; GO
Hier sehen Sie das Resultset.
| Partition | COUNT |
|---|---|
| 1 | 2 |
| 3 | 2 |
Zeilen werden nicht für Partitionsnummer 2zurückgegeben, die vorhanden ist, aber keine Daten enthält.
C. Zurückgeben aller Zeilen aus einer Partition einer partitionierten Tabelle oder eines partitionierten Index
Im folgenden Beispiel werden alle Zeilen zurückgegeben, die in der Partition 3 der Tabelle PartitionTable enthalten sind.
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;
Hier sehen Sie das Resultset.
| col1 | col2 |
|---|---|
500 |
Eine weitere Zeile |
1000 |
Eine weitere Zeile |