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 USED
et 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
ouALTER
autorisation sur la base de données dans laquelle le schéma de partition est créé.CONTROL SERVER
ouALTER 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]);