CREATE PARTITION SCHEME (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure 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 ] )  
[ ; ]  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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: