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

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Crée, dans la base de données active, un schéma qui mappe les partitions d'une table ou d'un index partitionné avec des groupes de fichiers.Creates a scheme in the current database that maps the partitions of a partitioned table or index to filegroups. Le nombre et le domaine des partitions d'une table ou d'un index partitionné sont définis dans une fonction de partition.The number and domain of the partitions of a partitioned table or index are determined in a partition function. Vous devez d’abord créer une fonction de partition dans une instruction CREATE PARTITION FUNCTION avant de créer un schéma de partition.A partition function must first be created in a CREATE PARTITION FUNCTION statement before creating a partition scheme.

Note

Dans Azure SQL Database, seuls les groupes de fichiers primaires sont pris en charge.In Azure SQL Database only primary filegroups are supported.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

CREATE PARTITION SCHEME partition_scheme_name  
AS PARTITION partition_function_name  
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )  
[ ; ]  

ArgumentsArguments

partition_scheme_namepartition_scheme_name
Nom du schéma de partition.Is the name of the partition scheme. Les noms de schéma de partition doivent être uniques dans la base de données et respecter les règles applicables aux identificateurs.Partition scheme names must be unique within the database and comply with the rules for identifiers.

partition_function_namepartition_function_name
Nom de la fonction de partition qui utilise le schéma de partition.Is the name of the partition function using the partition scheme. Les partitions créées par la fonction de partition sont mappées avec les groupes de fichiers spécifiés dans le schéma de partition.Partitions created by the partition function are mapped to the filegroups specified in the partition scheme. partition_function_name doit déjà exister dans la base de données.partition_function_name must already exist in the database. Une même partition ne peut pas contenir des groupes de fichiers FILESTREAM et non FILESTREAM.A single partition cannot contain both FILESTREAM and non-FILESTREAM filegroups.

ALLALL
Spécifie que toutes les partitions sont mappées au groupe de fichiers indiqué dans file_group_name ou au groupe de fichiers primaire si [ PRIMARY ] est spécifié.Specifies that all partitions map to the filegroup provided in file_group_name, or to the primary filegroup if [ PRIMARY ] is specified. Si la valeur ALL est définie, un seul file_group_name peut être spécifié.If ALL is specified, only one file_group_name can be specified.

file_group_name | [ PRIMARY ] [ ,...n]file_group_name | [ PRIMARY ] [ ,...n]
Spécifie les noms des groupes de fichiers devant contenir les partitions spécifiées par partition_function_name.Specifies the names of the filegroups to hold the partitions specified by partition_function_name. file_group_name doit déjà exister dans la base de données.file_group_name must already exist in the database.

Si [ PRIMARY ] est spécifié, la partition est stockée dans le groupe de fichiers primaire.If [ PRIMARY ] is specified, the partition is stored on the primary filegroup. Si la valeur ALL est définie, un seul file_group_name peut être spécifié.If ALL is specified, only one file_group_name can be specified. Les partitions sont affectées à des groupes de fichiers, en commençant par la partition 1, dans l’ordre dans lequel les groupes de fichiers sont répertoriés dans [,...n]. Un même file_group_name peut être spécifié plusieurs fois dans [,...n].Partitions are assigned to filegroups, starting with partition 1, in the order in which the filegroups are listed in [,...n]. The same file_group_name can be specified more than one time in [,...n]. Si n n’est pas suffisant pour contenir toutes les partitions indiquées dans partition_function_name, CREATE PARTITION SCHEME échoue avec une erreur.If n is not sufficient to hold the number of partitions specified in partition_function_name, CREATE PARTITION SCHEME fails with an error.

Si partition_function_name génère moins de partitions que de groupes de fichiers, le premier groupe de fichiers non affecté est marqué comme NEXT USED et un message d’information s’affiche en indiquant le nom du groupe de fichiers NEXT USED.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. Si la valeur ALL est spécifié, l’unique file_group_name conserve sa propriété NEXT USED pour ce partition_function_name.If ALL is specified, the sole file_group_name maintains its NEXT USED property for this partition_function_name. Le groupe de fichiers NEXT USED recevra une partition supplémentaire si une instruction ALTER PARTITION FUNCTION en crée une.The NEXT USED filegroup will receive an additional partition if one is created in an ALTER PARTITION FUNCTION statement. Utilisez ALTER PARTITION SCHEME pour créer de nouveaux groupes de fichiers non affectés qui contiendront de nouvelles partitions.To create additional unassigned filegroups to hold new partitions, use ALTER PARTITION SCHEME.

Quand vous spécifiez le groupe de fichiers primaire dans file_group_name [ 1 ,...n], PRIMARY doit être délimité, comme dans [ PRIMARY], car il s’agit d’un mot clé.When you specify the primary filegroup in file_group_name [ 1 ,...n], PRIMARY must be delimited, as in [ PRIMARY], because it is a keyword.

Seul PRIMARY est pris en charge pour Base de données SQLSQL Database.Only PRIMARY is supported for Base de données SQLSQL Database. Consultez l’exemple E ci-dessous.See example E below.

AutorisationsPermissions

Les autorisations suivantes peuvent être utilisées pour exécuter la procédure CREATE PARTITION SCHEME :The following permissions can be used to execute CREATE PARTITION SCHEME:

  • Autorisation ALTER ANY DATASPACE.ALTER ANY DATASPACE permission. Cette autorisation est attribuée par défaut aux membres du rôle de serveur fixe sysadmin et des rôles de base de données fixes db_owner et db_ddladmin .This permission defaults to members of the sysadmin fixed server role and the db_owner and db_ddladmin fixed database roles.

  • L'autorisation CONTROL ou ALTER sur la base de données dans laquelle le schéma de partition est créé.CONTROL or ALTER permission on the database in which the partition scheme is being created.

  • L'autorisation CONTROL SERVER ou ALTER ANY DATABASE sur le serveur de la base de données dans laquelle le schéma de partition est créé.CONTROL SERVER or ALTER ANY DATABASE permission on the server of the database in which the partition scheme is being created.

ExemplesExamples

A.A. Création d'un schéma de partition qui mappe chaque partition à un groupe de fichiers différentCreating a partition scheme that maps each partition to a different filegroup

L'exemple suivant crée une fonction de partition pour partitionner une table ou un index en quatre partitions.The following example creates a partition function to partition a table or index into four partitions. Un schéma de partition est ensuite créé ; il spécifie les groupes de fichiers qui contiennent chacune des quatre partitions.A partition scheme is then created that specifies the filegroups to hold each one of the four partitions. Cet exemple suppose que les groupes de fichiers existent déjà dans la base de données.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);  

Les partitions d’une table qui utilise la fonction de partition myRangePF1 sur la colonne de partitionnement col1 seraient affectées comme illustré dans le tableau suivant.The partitions of a table that uses partition function myRangePF1 on partitioning column col1 would be assigned as shown in the following table.

Groupe de fichiersFilegroup test1fg test2fg test3fg test4fg
PartitionPartition 11 22 33 44
ValeursValues 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. Création d'un schéma de partition qui mappe plusieurs partitions à un même groupe de fichiersCreating a partition scheme that maps multiple partitions to the same filegroup

Si toutes les partitions sont mappées avec le même groupe de fichiers, utilisez le mot clé ALL.If all the partitions map to the same filegroup, use the ALL keyword. En revanche, si plusieurs partitions (mais pas toutes) sont mappées avec le même groupe de fichiers, le nom de ce groupe doit être répété, comme illustré dans l'exemple suivant.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 );  

Les partitions d’une table qui utilise la fonction de partition myRangePF2 sur la colonne de partitionnement col1 seraient affectées comme illustré dans le tableau suivant.The partitions of a table that uses partition function myRangePF2 on partitioning column col1 would be assigned as shown in the following table.

Groupe de fichiersFilegroup test1fg test1fg test1fg test2fg
PartitionPartition 11 22 33 44
ValeursValues col1 <= 1col1 <= 1 col1 > 1 AND col1 <= 100col1 > 1 AND col1 <= 100 col1 > 100 AND col1 <= 1000col1 > 100 AND col1 <= 1000 col1 > 1000col1 > 1000

C.C. Création d'un schéma de partition qui mappe toutes les partitions à un même groupe de fichiersCreating a partition scheme that maps all partitions to the same filegroup

L'exemple suivant crée la même fonction de partition que dans les exemples précédents. Le schéma de partition créé mappe toutes les partitions avec le même groupe de fichiers.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. Création d'un schéma de partition qui spécifie un groupe de fichiers « NEXT USED »Creating a partition scheme that specifies a 'NEXT USED' filegroup

L'exemple suivant crée la même fonction de partition que dans les exemples précédents. Le schéma de partition créé répertorie plus de groupe de fichiers que de partitions créées par la fonction de partition associée.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)  

L'exécution de l'instruction renvoie le message suivant.Executing the statement returns the following message.

Le schéma de partition 'myRangePS4' a été créé avec succès.Partition scheme 'myRangePS4' has been created successfully. 'test5fg' est marqué comme étant le prochain groupe de fichiers utilisé dans le schéma de partition 'myRangePS4'.'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.

Si la fonction de partition myRangePF4 est modifiée afin d'ajouter une partition, le groupe de fichiers test5fg reçoit la nouvelle partition.If partition function myRangePF4 is changed to add a partition, filegroup test5fg receives the newly created partition.

E.E. Création d’un schéma de partition uniquement sur PRIMARY - Seul PRIMARY est pris en charge pour Base de données SQLSQL DatabaseCreating a partition schema only on PRIMARY - only PRIMARY is supported for Base de données SQLSQL Database

L'exemple suivant crée une fonction de partition pour partitionner une table ou un index en quatre partitions.The following example creates a partition function to partition a table or index into four partitions. Un schéma de partition qui spécifie que toutes les partitions sont créées dans le groupe de fichiers PRIMARY est ensuite créé.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] );  

Voir aussiSee 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)
Créer des tables et des index partitionnés 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)