CREATE PARTITION SCHEME (Transact-SQL)

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. Le nombre et le domaine des partitions d'une table ou d'un index partitionné sont définis 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.

Icône Lien de rubriqueConventions de la syntaxe de 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. Ce nom doit être unique dans la base de données et être conforme aux règles gouvernant les 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 avec le groupe de fichiers indiqué dans file_group_name ou avec le groupe de fichiers primaire si [PRIMARY] est spécifié. Si la valeur ALL est spécifiée, 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 spécifiée, 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, et dans l'ordre dans lequel les groupes de fichiers sont répertoriés dans [,...n]. Un même file_group_name peut apparaître plusieurs fois dans [,...n]. Si n n'est pas suffisant pour contenir toutes les partitions indiquées dans partition_function_name, la procédure CREATE PARTITION SCHEME échoue en générant 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 s'affiche en indiquant le groupe de fichiers NEXT USED. Si ALL est spécifié, 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.

    Lorsque 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é.

Autorisations

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

  • L'autorisation ALTER ANY DATASPACE. Elle revient par défaut aux membres du rôle serveur fixe sysadmin et des rôles de base de données fixes db_ddladmin et db_owner.

  • 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

A. 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 afin de subdiviser 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

test1fg

test2fg

test3fg

test4fg

Partition

1

2

3

4

Valeurs

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <= 1000

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

test1fg

test1fg

test1fg

test2fg

Partition

1

2

3

4

Valeurs

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <= 1000

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.

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.