Partager via


CREATE PARTITION SCHEME (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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 un ou plusieurs groupes de fichiers. Les valeurs qui mappent les lignes d’une table ou d’un index dans des partitions sont spécifiées dans une fonction de partition. 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.

Notes

Dans Azure SQL Database, seuls les groupes de fichiers principaux sont pris en charge. Découvrez les groupes de fichiers et les stratégies de partitionnement dans les groupes de fichiers.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

partition_scheme_name

Nom du schéma de partition. 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_function_name

Nom de la fonction de partition à l’aide du schéma de partition. 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. partition_function_name doit déjà exister dans la base de données. Une seule partition ne peut pas contenir à la fois des groupes de fichiers FILESTREAM et non-FILESTREAM.

ALL

Spécifie que toutes les partitions correspondent au groupe de fichiers fourni dans file_group_name, ou au groupe de fichiers principal si [PRIMARY] est spécifié. Si ALL est spécifié, une seule file_group_name peut être spécifiée.

file_group_name | [ PRIMARY ] [ , ...n ]

Spécifie les noms des groupes de fichiers devant contenir les partitions spécifiées par partition_function_name. file_group_name doit déjà exister dans la base de données.

Si [PRIMARY] est spécifié, la partition est stockée sur le groupe de fichiers principal. Si ALL est spécifié, une seule file_group_name peut être spécifiée. Les partitions sont affectées aux groupes de fichiers, à partir de la partition 1, dans l’ordre dans lequel les groupes de fichiers sont répertoriés dans [, ...<n>]. La même file_group_name peut être spécifiée plusieurs fois dans [, ...<n>]. Si n n’est pas suffisant pour contenir le nombre de partitions spécifiées dans partition_function_name, CREATE PARTITION SCHEME échoue avec une erreur.

Si partition_function_name génère moins de partitions que de groupes de fichiers, le premier groupe de fichiers non attribué est marqué NEXT USEDet un message d’informations affiche le nom du groupe de fichiers NEXT USED. Si ALL est spécifié, la seule file_group_name conserve sa propriété NEXT USED pour cette partition_function_name. Le groupe de fichiers NEXT USED reçoit une partition supplémentaire si une partition est créée dans une instruction ALTER PARTITION FUNCTION. Pour créer d’autres groupes de fichiers non attribués pour contenir de nouvelles partitions, utilisez ALTER PARTITION SCHEME.

Lorsque vous spécifiez le groupe de fichiers principal dans <file_group_name> [, ...<n>], PRIMARY doit être délimité, comme dans [PRIMARY], car il s’agit d’un mot clé.

Seul PRIMARY est pris en charge pour SQL Database. Consultez exemple E.

Autorisations

Les autorisations suivantes peuvent être utilisées pour exécuter CREATE PARTITION SCHEME:

  • ALTER ANY DATASPACE autorisation. 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 .

  • CONTROL ou ALTER autorisation sur la base de données dans laquelle le schéma de partition est créé.

  • CONTROL SERVER ou ALTER ANY DATABASE autorisation sur le serveur de la base de données dans laquelle le schéma de partition est créé.

Exemples

R. Créer un schéma de partition qui mappe chaque partition à un autre groupe de fichiers

L'exemple suivant crée une fonction de partition pour partitionner une table ou un index en quatre partitions. Un schéma de partition est ensuite créé ; il spécifie les groupes de fichiers qui contiennent chacune des quatre partitions. Cet exemple suppose que les groupes de fichiers existent déjà dans la base de données.

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 sont affectées, comme indiqué dans le tableau suivant.

Groupe de fichiers Partition Valeurs
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 AND col1<= 100
test3fg 3 col1 > 100 AND col1<= 1000
test4fg 4 col1 > 1000

B. Créer un schéma de partition qui mappe plusieurs partitions au même groupe de fichiers

Si toutes les partitions sont mappées au même groupe de fichiers, utilisez le mot clé ALL. 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.

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 sont affectées, comme indiqué dans le tableau suivant.

Groupe de fichiers Partition Valeurs
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 AND col1<= 100
test1fg 3 col1 > 100 AND col1<= 1000
test2fg 4 col1 > 1000

C. Créer un schéma de partition qui mappe toutes les partitions au même groupe de fichiers

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.

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. Créer un schéma de partition qui spécifie un groupe de fichiers NEXT USED

L’exemple suivant crée la même fonction de partition que dans les exemples précédents. Il crée également un schéma de partition qui répertorie plus de groupes de fichiers qu’il existe des partitions créées par la fonction de partition associée.

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.

Partition scheme 'myRangePS4' has been created successfully. '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.

E. Créer un schéma de partition uniquement sur PRIMARY

Dans Azure SQL Database, l’ajout de fichiers et de groupes de fichiers n’est pas pris en charge, mais le partitionnement de tables est pris en charge en partitionnant uniquement le groupe de fichiers PRIMARY.

L'exemple suivant crée une fonction de partition pour partitionner une table ou un index en quatre partitions. Un schéma de partition est ensuite créé qui spécifie que toutes les partitions sont créées dans le groupe de fichiers PRIMARY.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ([PRIMARY]);