CREATE PARTITION SCHEME (Transact-SQL)CREATE PARTITION SCHEME (Transact-SQL)

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL DatabaseAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database

Erstellt ein Schema in der aktuellen Datenbank, das die Partitionen einer partitionierten Tabelle oder eines partitionierten Indexes Dateigruppen zuordnet.Creates a scheme in the current database that maps the partitions of a partitioned table or index to filegroups. Die Anzahl und die Domäne der Partitionen einer partitionierten Tabelle oder eines partitionierten Indexes werden in einer Partitionsfunktion bestimmt.The number and domain of the partitions of a partitioned table or index are determined in a partition function. Eine Partitionsfunktion muss zunächst in einer CREATE PARTITION FUNCTION-Anweisung erstellt werden, bevor ein Partitionsschema erstellt wird.A partition function must first be created in a CREATE PARTITION FUNCTION statement before creating a partition scheme.

Hinweis

In Azure SQL-Datenbank werden nur primäre Dateigruppen unterstützt.In Azure SQL Database only primary filegroups are supported.

Symbol für Themenlink Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

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 oder früher finden Sie unter Dokumentation zu früheren Versionen.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumenteArguments

partition_scheme_namepartition_scheme_name
Der Name des Partitionsschemas.Is the name of the partition scheme. Partitionsschemanamen müssen innerhalb der Datenbank eindeutig sein und den Regeln für Bezeichner entsprechen.Partition scheme names must be unique within the database and comply with the rules for identifiers.

partition_function_namepartition_function_name
Der Name der Partitionsfunktion, die das Partitionsschema verwendet.Is the name of the partition function using the partition scheme. Von der Partitionsfunktion erstellte Partitionen werden den im Partitionsschema angegebenen Dateigruppen zugeordnet.Partitions created by the partition function are mapped to the filegroups specified in the partition scheme. partition_function_name muss in der Datenbank bereits vorhanden sein.partition_function_name must already exist in the database. Eine einzelne Partition kann nicht sowohl FILESTREAM- als auch nicht-FILESTREAM-Dateigruppen enthalten.A single partition cannot contain both FILESTREAM and non-FILESTREAM filegroups.

ALLALL
Legt fest, dass alle Partitionen der in file_group_name angegebenen Dateigruppe oder der primären Dateigruppe zugeordnet werden, falls [ PRIMARY ] angegeben ist.Specifies that all partitions map to the filegroup provided in file_group_name, or to the primary filegroup if [ PRIMARY ] is specified. Wenn ALL angegeben ist, kann nur ein einzelner file_group_name-Wert angegeben werden.If ALL is specified, only one file_group_name can be specified.

file_group_name | [ PRIMARY ] [ , ...n]file_group_name | [ PRIMARY ] [ ,...n]
Gibt die Namen der Dateigruppen an, in denen die durch partition_function_name angegebenen Partitionen gespeichert werden.Specifies the names of the filegroups to hold the partitions specified by partition_function_name. file_group_name muss bereits in der Datenbank vorhanden sein.file_group_name must already exist in the database.

Wenn [ PRIMARY ] angegeben ist, wird die Partition in der primären Dateigruppe gespeichert.If [ PRIMARY ] is specified, the partition is stored on the primary filegroup. Wenn ALL angegeben ist, kann nur ein einzelner file_group_name-Wert angegeben werden.If ALL is specified, only one file_group_name can be specified. Partitionen werden, beginnend mit der Partition 1, Dateigruppen in der Reihenfolge zugewiesen, in der die Dateigruppen in [ , ...n] aufgelistet sind.Partitions are assigned to filegroups, starting with partition 1, in the order in which the filegroups are listed in [,...n]. Derselbe file_group_name-Wert kann mehrmals in [ , ...n] angegeben werden.The same file_group_name can be specified more than one time in [,...n]. 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.If n is not sufficient to hold the number of partitions specified in partition_function_name, CREATE PARTITION SCHEME fails with an error.

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.If partition_function_name generates less partitions than filegroups, the first unassigned filegroup is marked NEXT USED, and an information message displays naming the NEXT USED filegroup. Falls ALL angegeben ist, behält der einzige file_group_name-Wert seine NEXT USED-Eigenschaft für diesen partition_function_name-Wert bei.If ALL is specified, the sole file_group_name maintains its NEXT USED property for this partition_function_name. Die NEXT USED-Dateigruppe erhält eine zusätzliche Partition, falls eine solche in einer ALTER PARTITION FUNCTION-Anweisung erstellt wird.The NEXT USED filegroup will receive an additional partition if one is created in an ALTER PARTITION FUNCTION statement. Verwenden Sie ALTER PARTITION SCHEME, um zusätzliche nicht zugewiesene Dateigruppen zum Speichern neuer Partitionen zu erstellen.To create additional unassigned filegroups to hold new partitions, use ALTER PARTITION SCHEME.

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.When you specify the primary filegroup in file_group_name [ 1 ,...n], PRIMARY must be delimited, as in [ PRIMARY ], because it is a keyword.

Nur PRIMARY wird für SQL-DatenbankSQL Database unterstützt.Only PRIMARY is supported for SQL-DatenbankSQL Database. Weitere Informationen finden Sie unten im Beispiel E.See example E below.

BerechtigungenPermissions

Die folgenden Berechtigungen können für CREATE PARTITION SCHEME verwendet werden:The following permissions can be used to execute CREATE PARTITION SCHEME:

  • ALTER ANY DATASPACE-Berechtigung.ALTER ANY DATASPACE permission. Diese Berechtigung gilt standardmäßig für Mitglieder der festen Serverrolle sysadmin und für Mitglieder der festen Datenbankrollen db_owner und db_ddladmin .This permission defaults to members of the sysadmin fixed server role and the db_owner and db_ddladmin fixed database roles.

  • CONTROL- oder ALTER-Berechtigung für die Datenbank, in der das Partitionsschema erstellt wird.CONTROL or ALTER permission on the database in which the partition scheme is being created.

  • CONTROL SERVER- oder ALTER ANY DATABASE-Berechtigung für den Server der Datenbank, in der das Partitionsschema erstellt wird.CONTROL SERVER or ALTER ANY DATABASE permission on the server of the database in which the partition scheme is being created.

BeispieleExamples

A.A. Erstellen eines Partitionsschemas, das jede Partition einer anderen Dateigruppe zuordnetCreating a partition scheme that maps each partition to a different filegroup

Im folgenden Beispiel wird eine Partitionsfunktion zum Partitionieren einer Tabelle oder eines Indexes in vier Partitionen erstellt.The following example creates a partition function to partition a table or index into four partitions. Es wird ein Partitionsschema erstellt, das die Dateigruppen zum Speichern der vier Partitionen angibt.A partition scheme is then created that specifies the filegroups to hold each one of the four partitions. In diesem Beispiel wird davon ausgegangen, dass die Dateigruppen bereits in der Datenbank vorhanden sind.This example assumes the filegroups already exist in the database.

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:The partitions of a table that uses partition function myRangePF1 on partitioning column col1 would be assigned as shown in the following table.

DateigruppeFilegroup test1fg test2fg test3fg test4fg
PartitionPartition 11 22 33 44
WerteValues col1 <= 1col1 <= 1 col1 > 1 AND col1 <= 100col1 > 1 AND col1 <= 100 col1 > 100 AND col1 <= 1000col1 > 100 AND col1 <= 1000 col1 > 1000col1 > 1000

B.B. Erstellen eines Partitionsschemas, mit dem mehrere Partitionen derselben Dateigruppe zugeordnet werdenCreating a partition scheme that maps multiple partitions to the same filegroup

Verwenden Sie das ALL-Schlüsselwort, wenn alle Partitionen derselben Dateigruppe zugeordnet werden.If all the partitions map to the same filegroup, use the ALL keyword. Falls aber mehrere, jedoch nicht alle Partitionen derselben Dateigruppe zugeordnet werden, muss der Dateigruppenname wiederholt werden, wie im folgenden Beispiel gezeigt.But if multiple, but not all, partitions are mapped to the same filegroup, the filegroup name must be repeated, as shown in the following example.

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:The partitions of a table that uses partition function myRangePF2 on partitioning column col1 would be assigned as shown in the following table.

DateigruppeFilegroup test1fg test1fg test1fg test2fg
PartitionPartition 11 22 33 44
WerteValues col1 <= 1col1 <= 1 col1 > 1 UND col1 <= 100col1 > 1 AND col1 <= 100 col1 > 100 AND col1 <= 1000col1 > 100 AND col1 <= 1000 col1 > 1000col1 > 1000

C.C. Erstellen eines Partitionsschemas, mit dem alle Partitionen derselben Dateigruppe zugeordnet werdenCreating a partition scheme that maps all partitions to the same filegroup

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.The following example creates the same partition function as in the previous examples, and a partition scheme is created that maps all partitions to the same filegroup.

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:D. Erstellen eines Partitionsschemas, das die Dateigruppe 'NEXT USED' angibtCreating a partition scheme that specifies a 'NEXT USED' filegroup

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.The following example creates the same partition function as in the previous examples, and a partition scheme is created that lists more filegroups than there are partitions created by the associated partition function.

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.Executing the statement returns the following message.

Partition scheme 'myRangePS4' has been created successfully.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.)'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.If partition function myRangePF4 is changed to add a partition, filegroup test5fg receives the newly created partition.

E.E. Erstellen eines Partitionsschemas nur für PRIMARY (nur PRIMARY wird für SQL-DatenbankSQL Database unterstützt)Creating a partition scheme only on PRIMARY - only PRIMARY is supported for SQL-DatenbankSQL Database

Im folgenden Beispiel wird eine Partitionsfunktion zum Partitionieren einer Tabelle oder eines Indexes in vier Partitionen erstellt.The following example creates a partition function to partition a table or index into four partitions. Anschließend wird ein Partitionsschema erstellt, das festlegt, dass alle Partitionen in der PRIMARY-Dateigruppe erstellt werden.A partition scheme is then created that specifies that all partitions are created in the PRIMARY filegroup.

CREATE PARTITION FUNCTION myRangePF1 (INT)  
AS RANGE LEFT FOR VALUES (1, 100, 1000);  
GO  
CREATE PARTITION SCHEME myRangePS1  
AS PARTITION myRangePF1  
ALL TO ( [PRIMARY] );  

Weitere InformationenSee Also

CREATE PARTITION FUNCTION (Transact-SQL) CREATE PARTITION FUNCTION (Transact-SQL)
ALTER PARTITION SCHEME (Transact-SQL) ALTER PARTITION SCHEME (Transact-SQL)
DROP PARTITION SCHEME (Transact-SQL) DROP PARTITION SCHEME (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
Erstellen partitionierter Tabellen und Indizes Create Partitioned Tables and Indexes
sys.partition_schemes (Transact-SQL) sys.partition_schemes (Transact-SQL)
sys.data_spaces (Transact-SQL) sys.data_spaces (Transact-SQL)
sys.destination_data_spaces (Transact-SQL) sys.destination_data_spaces (Transact-SQL)
sys.partitions (Transact-SQL) sys.partitions (Transact-SQL)
sys.tables (Transact-SQL) sys.tables (Transact-SQL)
sys.indexes (Transact-SQL) sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)sys.index_columns (Transact-SQL)