Freigeben über


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 der 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 mithilfe des Partitionsschemas. 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

Gibt an, dass alle Partitionen der in file_group_namebereitgestellten Dateigruppe oder der primären Dateigruppe zugeordnet sind, wenn [PRIMARY] angegeben ist. Wenn ALL angegeben ist, kann nur ein file_group_name angegeben werden.

file_group_name | [ PRIMÄR ] [ , ...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 file_group_name angegeben werden. Partitionen werden Dateigruppen zugewiesen, beginnend mit Partition 1, in der Reihenfolge, in der die Dateigruppen in [, ...<n>]aufgeführt werden. Das gleiche file_group_name kann in [, ...<n>]mehrmals angegeben werden. Wenn n nicht ausreicht, um die Anzahl der in partition_function_nameangegebenen Partitionen zu enthalten, schlägt CREATE PARTITION SCHEME mit einem Fehler fehl.

Wenn partition_function_name weniger Partitionen als Dateigruppen generiert, wird die erste nicht zugewiesene Dateigruppe NEXT USEDmarkiert, und eine Informationsmeldung zeigt die Benennung der NEXT USED Dateigruppe an. Wenn ALL angegeben wird, behält die einzige file_group_name ihre NEXT USED Eigenschaft für diese partition_function_namebei. Die NEXT USED Dateigruppe empfängt eine zusätzliche Partition, wenn eine in einer ALTER PARTITION FUNCTION-Anweisung erstellt wird. Wenn Sie weitere nicht zugewiesene Dateigruppen erstellen möchten, um neue Partitionen zu speichern, verwenden Sie ALTER PARTITION SCHEME.

Wenn Sie die primäre Dateigruppe in <file_group_name> [, ...<n>]angeben, muss PRIMARY wie in [PRIMARY]getrennt werden, da es sich um ein Schlüsselwort ist.

Nur PRIMARY wird für SQL-Datenbank unterstützt. Siehe Beispiel E.

Berechtigungen

Die folgenden Berechtigungen können verwendet werden, um CREATE PARTITION SCHEMEauszuführen:

  • 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 auf dem 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 Partitionsfunktion myRangePF1 für die Partitionierungsspalte col1 verwendet, würden wie in der folgenden Tabelle dargestellt zugewiesen.

Dateigruppe Partition Werte
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 UND col1<= 100
test3fg 3 col1 > 100 UND col1<= 1000
test4fg 4 col1 > 1000

B. Erstellen eines Partitionsschemas, das mehrere Partitionen derselben Dateigruppe zuordnet

Wenn alle Partitionen derselben Dateigruppe zugeordnet sind, verwenden Sie das schlüsselwort ALL. 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 Partitionsfunktion myRangePF2 für die Partitionierungsspalte col1 verwendet, würden wie in der folgenden Tabelle dargestellt zugewiesen.

Dateigruppe Partition Werte
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 UND col1<= 100
test1fg 3 col1 > 100 UND col1<= 1000
test2fg 4 col1 > 1000

C. Erstellen eines Partitionsschemas, das alle Partitionen derselben Dateigruppe zuordnet

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 eine NEXT USED-Dateigruppe angibt

Im folgenden Beispiel wird die gleiche Partitionsfunktion wie in den vorherigen Beispielen erstellt. Außerdem wird ein Partitionsschema erstellt, das mehr Dateigruppen auflistet, als Partitionen von der zugeordneten Partitionsfunktion 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'.

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 PRIMARY

In der Azure SQL-Datenbank wird das Hinzufügen von Dateien und Dateigruppen nicht unterstützt, die Tabellenpartitionierung wird jedoch nur über die PRIMARY Dateigruppe hinweg 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 angibt, 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]);