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 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 ] )  
[ ; ]  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

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 :