CREATE PARTITION SCHEME (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure 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 primaires 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 qui utilise le 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 même partition ne peut pas contenir des groupes de fichiers FILESTREAM et non FILESTREAM.
ALL
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é. Si la valeur ALL est définie, un seul file_group_name peut être spécifié.
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 dans le groupe de fichiers primaire. Si la valeur ALL est définie, un seul file_group_name peut être spécifié. 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]. Si n n’est pas suffisant pour contenir toutes les partitions indiquées dans partition_function_name, CREATEPARTITION 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 affecté est marqué comme NEXT USED et un message d’information indique le nom du groupe de fichiers NEXT USED. Si la valeur ALL est spécifiée, l’unique file_group_name conserve sa propriété NEXT USED pour ce partition_function_name. Le groupe de fichiers NEXT USED recevra une partition supplémentaire si une instruction ALTER PARTITION FUNCTION en crée une. Utilisez ALTER PARTITION SCHEME pour créer de nouveaux groupes de fichiers non affectés qui contiendront de nouvelles partitions.
Quand vous spécifiez le groupe de fichiers primaire 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. Voir l'exemple ci-dessous.
Autorisations
Les autorisations suivantes peuvent être utilisées pour exécuter la procédure CREATE PARTITION SCHEME :
- Autorisation ALTER ANY DATASPACE. 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 .
- L'autorisation CONTROL ou ALTER sur la base de données dans laquelle le schéma de partition est créé.
- 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éé.
Exemples
R. Création d'un schéma de partition qui mappe chaque partition à un groupe de fichiers différent
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 seraient affectées comme illustré 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éation d'un schéma de partition qui mappe plusieurs partitions à un même groupe de fichiers
Si toutes les partitions sont mappées avec le 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 seraient affectées comme illustré 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éation d'un schéma de partition qui mappe toutes les partitions à un 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éation d'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. 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.
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.
Le schéma de partition 'myRangePS4' a été créé avec succès. 'test5fg' est marqué comme étant le prochain groupe de fichiers utilisé dans le schéma de partition '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éation d’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 table est pris en charge en partitionnant dans le groupe de fichiers PRIMARY uniquement.
L'exemple suivant crée une fonction de partition pour partitionner une table ou un index en quatre 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éé.
CREATE PARTITION FUNCTION myRangePF1 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ( [PRIMARY] );
Étapes suivantes
Découvrez le partitionnement des tables et les concepts associés dans les articles suivants :