CREATE PARTITION SCHEME (Transact-SQL)

Erstellt ein Schema in der aktuellen Datenbank, das die Partitionen einer partitionierten Tabelle oder eines partitionierten Indexes Dateigruppen zuordnet. Die Anzahl und die Domäne der Partitionen einer partitionierten Tabelle oder eines partitionierten Indexes werden in einer Partitionsfunktion bestimmt. Eine Partitionsfunktion muss zunächst in einer CREATE PARTITION FUNCTION-Anweisung erstellt werden, bevor ein Partitionsschema erstellt wird.

Themenlink (Symbol)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 Dateigruppen zugeordnet, die im Partitionsschema angegeben sind. partition_function_name muss bereits in der Datenbank 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_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. Derselbe 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 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 [ 1**,**...n] angeben, muss PRIMARY durch Trennzeichen begrenzt sein, wie z. B. in [PRIMARY], da es sich um ein Schlüsselwort handelt.

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, mit dem jede Partition einer anderen Dateigruppe zugeordnet wird

Im folgenden Beispiel wird eine Partitionsfunktion erstellt, um eine Tabelle oder einen Index in vier Partitionen zu partitionieren. 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-Partitionsfunktionen zum Partitionieren der col1-Spalte verwendet, würden zugewiesen, wie in der folgenden Tabelle gezeigt.

Dateigruppe

test1fg

test2fg

test3fg

test4fg

Partition

1

2

3

4

Werte

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <= 1000

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-Partitionsfunktionen zum Partitionieren der col1-Spalte verwendet, würden zugewiesen, wie in der folgenden Tabelle gezeigt.

Dateigruppe

test1fg

test1fg

test1fg

test2fg

Partition

1

2

3

4

Werte

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <= 1000

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, mit dem die Dateigruppe 'NEXT USED' angegeben wird

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'.

Falls die myRangePF4-Partitionsfunktion geändert wird, um eine Partition hinzuzufügen, erhält die test5fg-Dateigruppe die neu erstellte Partition.