CREATE PARTITION SCHEME (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Erstellt ein Schema in der aktuellen Datenbank, das die Partitionen einer partitionierten Tabelle oder eines partitionierten Indexes einer oder mehreren Dateigruppen zuordnet. Die Werte, die die Zeilen einer Tabelle oder eines Indexes in Partitionen zugeordnet werden sollen, werden in einer Partitionsfunktion angegeben. Eine Partitionsfunktion muss zunächst in einer CREATE PARTITION FUNCTION-Anweisung erstellt werden, bevor ein Partitionsschema erstellt wird.
Hinweis
In Azure SQL-Datenbank werden nur primäre Dateigruppen unterstützt. Weitere Informationen zu Dateigruppen und Partitionierungsstrategien finden Sie unter Dateigruppen.
Transact-SQL-Syntaxkonventionen
Syntax
CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )
[ ; ]
Argumente
partition_scheme_name
Der Name des Partitionsschemas. Partitionsschemanamen müssen innerhalb der Datenbank eindeutig sein und den Regeln für Bezeichner entsprechen.
partition_function_name
Der Name der Partitionsfunktion, die das Partitionsschema verwendet. Von der Partitionsfunktion erstellte Partitionen werden den im Partitionsschema angegebenen Dateigruppen zugeordnet. partition_function_name muss in der Datenbank bereits vorhanden sein. Eine einzelne Partition kann nicht sowohl FILESTREAM- als auch nicht-FILESTREAM-Dateigruppen enthalten.
ALL
Legt fest, dass alle Partitionen der in file_group_name angegebenen Dateigruppe oder der primären Dateigruppe zugeordnet werden, falls [PRIMARY] angegeben ist. Wenn ALL angegeben ist, kann nur ein einzelner file_group_name-Wert angegeben werden.
file_group_name | [ PRIMARY ] [ ,...n]
Gibt die Namen der Dateigruppen an, in denen die durch partition_function_name angegebenen Partitionen gespeichert werden. file_group_name muss bereits in der Datenbank vorhanden sein.
Wenn [PRIMARY] angegeben ist, wird die Partition in der primären Dateigruppe gespeichert. Wenn ALL angegeben ist, kann nur ein einzelner file_group_name-Wert angegeben werden. Partitionen werden, beginnend mit der Partition 1, Dateigruppen in der Reihenfolge zugewiesen, in der die Dateigruppen in [,...n] aufgelistet sind. Der gleiche file_group_name-Wert kann mehrmals in [ ,...n] angegeben werden. Falls n zum Speichern der in partition_function_name angegebenen Anzahl von Partitionen nicht ausreichend ist, wird für CREATE PARTITION SCHEME ein Fehler gemeldet.
Falls partition_function_name weniger Partitionen als Dateigruppen generiert, wird die erste nicht zugewiesene Dateigruppe als NEXT USED markiert, und eine Informationsmeldung mit der NEXT USED-Dateigruppe wird angezeigt. Falls ALL angegeben ist, behält der einzige file_group_name-Wert seine NEXT USED-Eigenschaft für diesen partition_function_name-Wert bei. Die NEXT USED-Dateigruppe erhält eine zusätzliche Partition, falls eine solche in einer ALTER PARTITION FUNCTION-Anweisung erstellt wird. Verwenden Sie ALTER PARTITION SCHEME, um zusätzliche nicht zugewiesene Dateigruppen zum Speichern neuer Partitionen zu erstellen.
Wenn Sie die primäre Dateigruppe in file_group_name [ ,...n] angeben, muss PRIMARY durch Trennzeichen begrenzt sein, wie z. B. in [PRIMARY], da es sich um ein Schlüsselwort handelt.
Nur PRIMARY wird für SQL-Datenbank unterstützt. Ein Beispiel sehen Sie unten.
Berechtigungen
Die folgenden Berechtigungen können für CREATE PARTITION SCHEME verwendet werden:
- ALTER ANY DATASPACE-Berechtigung. Diese Berechtigung gilt standardmäßig für Mitglieder der festen Serverrolle sysadmin und für Mitglieder der festen Datenbankrollen db_owner und db_ddladmin .
- CONTROL- oder ALTER-Berechtigung für die Datenbank, in der das Partitionsschema erstellt wird.
- CONTROL SERVER- oder ALTER ANY DATABASE-Berechtigung für den Server der Datenbank, in der das Partitionsschema erstellt wird.
Beispiele
A. Erstellen eines Partitionsschemas, das jede Partition einer anderen Dateigruppe zuordnet
Im folgenden Beispiel wird eine Partitionsfunktion zum Partitionieren einer Tabelle oder eines Indexes in vier Partitionen erstellt. Es wird ein Partitionsschema erstellt, das die Dateigruppen zum Speichern der vier Partitionen angibt. In diesem Beispiel wird davon ausgegangen, dass die Dateigruppen bereits in der Datenbank vorhanden sind.
CREATE PARTITION FUNCTION myRangePF1 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);
Die Partitionen einer Tabelle, die die myRangePF1
-Partitionsfunktion zum Partitionieren der col1-Spalte verwendet, werden wie in der folgenden Tabelle zugewiesen:
Dateigruppe | Partition | Werte |
---|---|---|
test1fg |
1 | col1<= 1 |
test2fg |
2 | col1>1 AND col1<= 100 |
test3fg |
3 | col1>100 AND col1<= 1000 |
test4fg |
4 | col1>1000 |
B. Erstellen eines Partitionsschemas, mit dem mehrere Partitionen derselben Dateigruppe zugeordnet werden
Verwenden Sie das ALL-Schlüsselwort, wenn alle Partitionen derselben Dateigruppe zugeordnet werden. Falls aber mehrere, jedoch nicht alle Partitionen derselben Dateigruppe zugeordnet werden, muss der Dateigruppenname wiederholt werden, wie im folgenden Beispiel gezeigt.
CREATE PARTITION FUNCTION myRangePF2 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS2
AS PARTITION myRangePF2
TO ( test1fg, test1fg, test1fg, test2fg );
Die Partitionen einer Tabelle, die die myRangePF2
-Partitionsfunktion zum Partitionieren der col1-Spalte verwendet, werden wie in der folgenden Tabelle zugewiesen:
Dateigruppe | Partition | Werte |
---|---|---|
test1fg |
1 | col1<= 1 |
test1fg |
2 | col1>1 AND col1<= 100 |
test1fg |
3 | col1>100 AND col1<= 1000 |
test2fg |
4 | col1>1000 |
C. Erstellen eines Partitionsschemas, mit dem alle Partitionen derselben Dateigruppe zugeordnet werden
Im folgenden Beispiel wird dieselbe Partitionsfunktion wie in den vorherigen Beispielen erstellt, und ein Partitionsschema wird erstellt, mit dem alle Partitionen derselben Dateigruppe zugeordnet werden.
CREATE PARTITION FUNCTION myRangePF3 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS3
AS PARTITION myRangePF3
ALL TO ( test1fg );
D: Erstellen eines Partitionsschemas, das die Dateigruppe 'NEXT USED' angibt
Im folgenden Beispiel wird dieselbe Partitionsfunktion wie in den vorherigen Beispielen erstellt, und ein Partitionsschema wird erstellt, das mehr Dateigruppen auflistet, als Partitionen von der zugehörigen Partitionsfunktionen erstellt werden.
CREATE PARTITION FUNCTION myRangePF4 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS4
AS PARTITION myRangePF4
TO (test1fg, test2fg, test3fg, test4fg, test5fg)
Beim Ausführen der Anweisung wird die folgende Meldung zurückgegeben.
Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'. (Das Partitionsschema „myRangePS4“ wurde erfolgreich erstellt. „test5fg“wird als nächste Dateigruppe im Partitionsschema „myRangePS4“ gekennzeichnet.)
Falls die myRangePF4
-Partitionsfunktion geändert wird, um eine Partition hinzuzufügen, erhält die test5fg
-Dateigruppe die neu erstellte Partition.
E. Erstellen eines Partitionsschemas nur auf dem primären Replikat
In Azure SQL-Datenbank wird das Hinzufügen von Dateien und Dateigruppen nicht unterstützt, aber die Tabellenpartitionierung wird nur durch Partitionierung in der PRIMÄREN Dateigruppe unterstützt.
Im folgenden Beispiel wird eine Partitionsfunktion zum Partitionieren einer Tabelle oder eines Indexes in vier Partitionen erstellt. Anschließend wird ein Partitionsschema erstellt, das festlegt, dass alle Partitionen in der PRIMARY-Dateigruppe erstellt werden.
CREATE PARTITION FUNCTION myRangePF1 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ( [PRIMARY] );
Nächste Schritte
Weitere Informationen zur Tabellenpartitionierung und zu verwandten Konzepten finden Sie in den folgenden Artikeln: