Créer des tables et des index partitionnés

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Vous pouvez créer une table ou un index partitionné dans SQL Server, Azure SQL Database et Azure SQL Managed Instance en utilisant SQL Server Management Studio ou Transact-SQL. Les données des tables et index partitionnés sont divisées horizontalement en unités qui peuvent être réparties dans plusieurs groupes de fichiers d’une base de données ou stockées dans un seul groupe de fichiers. Le partitionnement permet de rendre des tables et des index volumineux plus gérables et plus évolutifs.

La création d’une table ou d’un index partitionné se fait généralement en trois ou quatre parties :

  1. Il est également possible de créer un ou plusieurs groupes de fichiers et les fichiers de données correspondants qui stockeront les partitions définies par le schéma de partition. La principale raison de placer des partitions sur plusieurs groupes de fichiers est de permettre des opérations indépendantes de sauvegarde et de restauration pour chaque groupe de fichiers. Si ce n’est pas nécessaire, vous pouvez choisir d’affecter toutes les partitions à un seul groupe de fichiers, en utilisant soit un groupe de fichiers existant, comme par exemple PRIMARY, soit un nouveau groupe de fichiers avec les fichiers de données associés. Dans presque tous les scénarios, vous obtiendrez tous les avantages du partitionnement, que vous utilisiez ou non plusieurs groupes de fichiers.

  2. Créez une fonction de partition qui mappe les lignes d’une table ou d’un index dans des partitions distinctes en fonction des valeurs d’une colonne spécifique. Vous pouvez utiliser une seule fonction de partition pour partitionner plusieurs objets.

  3. Créez un schéma de partition qui mappe les partitions d’une table ou d’un index partitionné à un ou plusieurs groupes de fichiers. Vous pouvez utiliser une seule schéma de partition pour partitionner plusieurs objets.

  4. Créez ou modifiez une table ou un index et spécifiez le schéma de partition comme emplacement de stockage, ainsi que la colonne qui servira de colonne de partitionnement.

Remarque

Le partitionnement est entièrement pris en charge dans Azure SQL Database. Étant donné que seul le groupe de fichiers PRIMARY est pris en charge dans Azure SQL Database, toutes les partitions doivent être placées sur le groupe de fichiers PRIMARY.

Le partitionnement de tables est également disponible dans les pools SQL dédiés dans Azure Synapse Analytics, avec certaines différences de syntaxe. Pour en savoir plus, consultez Partitionnement de tables dans un pool SQL dédié.

autorisations

La création d'une table partitionnée nécessite une autorisation CREATE TABLE dans la base de données et une autorisation ALTER pour le schéma dans lequel la table est créée. La création d'un index partitionné nécessite l'autorisation ALTER sur la table ou la vue dans laquelle l'index est créé. La création d'une table ou d'un index partitionné(e) nécessite l'une des autorisations supplémentaires suivantes :

  • 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 .

  • Autorisation CONTROL ou ALTER sur la base de données dans laquelle la fonction de partition et le schéma de partition sont créés.

  • Autorisation CONTROL SERVER ou ALTER ANY DATABASE sur le serveur de la base de données dans laquelle la fonction de partition et le schéma de partition sont créés.

Création d’une table partitionnée sur un groupe de fichiers à l’aide de Transact-SQL

Si vous n’avez pas besoin d’effectuer indépendamment des opérations de sauvegarde et de restauration sur les groupes de fichiers, le partitionnement d’une table à l’aide d’un seul groupe de fichiers simplifie la gestion de la table partitionnée à long terme.

Cet exemple convient à Azure SQL Database, qui ne permet pas l’ajout de fichiers et de groupes de fichiers. Le partitionnement de tables est pris en charge dans Azure SQL Database en créant des partitions dans le groupe de fichiers PRIMARY. Pour SQL Server et Azure SQL Managed Instance, vous pouvez choisir de spécifier un groupe de fichiers créé par l’utilisateur, en fonction de vos pratiques de gestion des fichiers et des groupes de fichiers.

Cet exemple vous guide pas à pas dans la création d’une table partitionnée dans SQL Server Management Studio (SSMS) en utilisant Transact-SQL. Il attribue toutes les partitions au groupe de fichiers PRIMARY. L'exemple :

  • Crée une fonction de partition RANGE RIGHT nommée myRangePF1 avec trois valeurs de délimitation utilisant le type de données datetime2. L’utilisation de trois valeurs de délimitation créera une table partitionnée avec quatre partitions.
  • Crée un schéma de partition nommé myRangePS1 qui utilise la syntaxe ALL TO pour affecter toutes les partitions de la fonction de partition myRangePF1 au groupe de fichiers PRIMARY.
  • Crée une table nommée PartitionTable sur le schéma de partition myRangePS1, en spécifiant une colonne nommée col1 comme colonne de partitionnement.
  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. Cet exemple crée une fonction de partition et un schéma de partition. Une nouvelle table est créée avec le schéma de partition spécifié comme emplacement de stockage.

CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))
    AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ;
GO

CREATE PARTITION SCHEME myRangePS1
    AS PARTITION myRangePF1
    ALL TO ('PRIMARY') ;
GO

CREATE TABLE dbo.PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))
    ON myRangePS1 (col1) ;
GO

Création d’une table partitionnée sur plusieurs groupes de fichiers à l’aide de Transact-SQL

Suivez les étapes de cette section pour créer un ou plusieurs groupes de fichiers, les fichiers correspondants et une table partitionnée à l’aide de Transact-SQL dans SSMS.

SQL Server et Azure SQL Managed Instance prennent tous deux en charge la création de groupes de fichiers et de fichiers. Azure SQL Managed Instance configure automatiquement le chemin d’accès pour tous les fichiers de base de données ajoutés, de sorte que la commande ALTER DATABASE ADD FILE dans Azure SQL Managed Instance n’autorise pas le paramètre FILENAME. Azure SQL Database prend en charge la création de tables partitionnées uniquement dans le groupe de fichiers PRIMARY. Recherchez un exemple de code pour Azure SQL Database dans la section Création d’une table partitionnée sur un groupe de fichiers à l’aide de Transact-SQL.

Exécutez l’exemple suivant sur une base de données vide. L'exemple :

  • Ajoute quatre nouveaux groupes de fichiers à une base de données.
  • Ajoute un fichier à chaque groupe de fichiers.
  • Crée une fonction de partition RANGE RIGHT appelée myRangePF1 avec trois valeurs de délimitation qui partitionnent une table en quatre partitions.
  • Crée un schéma de partition appelée myRangePS1 qui applique myRangePF1 aux quatre nouveaux groupes de fichiers.
  • Crée une table partitionnée appelée PartitionTable qui utilise myRangePS1 pour partitionner col1.
  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Cet exemple crée une nouvelle base de données et l’utilise. Il crée ensuite des groupes de fichiers, une fonction de partition et un schéma de partition. Une nouvelle table est créée avec le schéma de partition spécifié comme emplacement de stockage. Copiez et collez l'exemple suivant dans la fenêtre de requête.

    Si vous utilisez une instance managée Managed Instance, supprimez le paramètre FILENAME et la valeur associée de la commande ALTER DATABASE ADD FILE. L’instance managée Managed Instance détermine automatiquement le chemin d’accès au fichier.

    Si vous utilisez une instance SQL Server, personnalisez la valeur du paramètre FILENAME à un emplacement approprié pour votre instance.

    Si vous souhaitez utiliser une base de données existante, supprimez la commande CREATE DATABASE et modifiez l’instruction USE en fonction du nom de la base de données appropriée.

    Sélectionnez Exécuter.

    CREATE DATABASE PartitionTest;
    GO
    
    USE PartitionTest;
    GO
    
    ALTER DATABASE PartitionTest
    ADD FILEGROUP test1fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILEGROUP test2fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILEGROUP test3fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILEGROUP test4fg;
    
    ALTER DATABASE PartitionTest
    ADD FILE
    (
        NAME = partitiontest1,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest1.ndf',
        SIZE = 5MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP test1fg;
    ALTER DATABASE PartitionTest
    ADD FILE
    (
        NAME = partitiontest2,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest2.ndf',
        SIZE = 5MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP test2fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILE
    (
        NAME = partitiontest3,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest3.ndf',
        SIZE = 5MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP test3fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILE
    (
        NAME = partitiontest4,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest4.ndf',
        SIZE = 5MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP test4fg;
    GO
    
    CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))
        AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ;
    GO
    
    CREATE PARTITION SCHEME myRangePS1
        AS PARTITION myRangePF1
        TO (test1fg, test2fg, test3fg, test4fg) ;
    GO
    
    CREATE TABLE PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))
        ON myRangePS1 (col1) ;
    GO
    

Partitionnement d’une table avec SSMS

Suivez les étapes de cette section pour créer éventuellement des groupes de fichiers et des fichiers correspondants, puis créez une table partitionnée ou partitionnez une table existante à l’aide de l’Assistant Création de partition dans SQL Server Management Studio (SSMS). L’Assistant Création de partition est disponible dans SSMS pour SQL Server et Azure SQL Managed Instance. Pour Azure SQL Database, reportez-vous à la section Création d’une table partitionnée sur un groupe de fichiers à l’aide de Transact-SQL.

Création de nouveaux groupes de fichiers (facultatif)

Si vous souhaitez placer votre table partitionnée sur un ou plusieurs nouveaux groupes de fichiers, suivez les étapes décrites dans cette section. SQL Server et Azure SQL Managed Instance prennent tous deux en charge la création de groupes de fichiers et de fichiers. Dans Azure SQL Managed Instance, le chemin d’accès aux fichiers créés sera automatiquement configuré.

  1. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur la base de données dans laquelle vous souhaitez créer une table partitionnée et sélectionnez Propriétés.

  2. Dans la boîte de dialogue Propriétés de la base de données - nom_base_de_données, sous Sélectionner une page, sélectionnez Groupes de fichiers.

  3. Sous Lignes, sélectionnez Ajouter. Dans la nouvelle ligne, entrez le nom du groupe de fichiers.

    Avertissement

    Quand vous spécifiez plusieurs groupes de fichiers, vous devez toujours avoir un groupe de fichiers supplémentaire en plus du nombre de groupes de fichiers spécifié pour les valeurs limites lorsque vous créez des partitions.

  4. Continuez à ajouter des lignes jusqu’à ce que vous ayez créé tous les groupes de fichiers pour la ou les tables partitionnées.

  5. Cliquez sur OK.

  6. Sous Sélectionner une page, sélectionnez Fichiers.

  7. Sous Lignes, sélectionnez Ajouter. Dans la nouvelle ligne, entrez un nom de fichier et sélectionnez un groupe de fichiers.

  8. Continuez à ajouter des lignes jusqu'à ce que vous ayez créé au moins un fichier pour chaque groupe de fichiers.

Créer une table partitionnée

  1. Vous pouvez également développer le dossier Tables et créer une table comme vous le feriez habituellement. Pour plus d’informations, consultez Créer des tables (moteur de base de données). Vous pouvez éventuellement spécifier une table existante à l’étape suivante.

  2. Faites un clic droit sur la table à partitionner, pointez sur Stockage, puis sélectionnez Créer une partition....

  3. Dans l’Assistant Création de partition, sur la page Assistant Création de partition, sélectionnez Suivant.

  4. Sur la page Sélectionner une colonne de partitionnement , dans la grille Colonnes de partitionnement disponibles , sélectionnez la colonne sur laquelle vous souhaitez partitionner votre table. Seules les colonnes dont le type de données peut être utilisé pour partitionner des données seront affichées dans la grille Colonnes de partitionnement disponibles . Si vous sélectionnez une colonne calculée comme colonne de partitionnement, cette colonne doit être créée en tant que colonne persistante.

    Le degré avec lequel vous pouvez regrouper les données de façon logique déterminent les options dont vous disposez pour définir la colonne de partitionnement et la plage de valeurs. Par exemple, vous pouvez choisir de diviser vos données en regroupements logiques par mois ou trimestres d'une année. Les requêtes que vous projetez d'exécuter sur vos données déterminent si ce regroupement logique est adéquat pour gérer vos partitions de table. Tous les types de données sont utilisables comme colonnes de partitionnement, à l’exception de text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), des types de données d’alias ou des types de données de common language runtime (CLR) définis par l’utilisateur.

    Les options supplémentaires suivantes sont disponibles sur cette page :

    Colocaliser cette table avec la table partitionnée sélectionnée
    Permet de sélectionner une table partitionnée qui contient les données connexes à joindre à cette table sur la colonne de partitionnement. Les requêtes portant sur des tables présentant des partitions jointes sur les colonnes de partitionnement sont généralement plus efficaces.

    Aligner les index non uniques et uniques avec une colonne de partition indexée lors du stockage
    Aligne tous les index de la table qui sont partitionnés avec le même schéma de partition. Lorsque la table et ses index sont alignés, vous pouvez déplacer des partitions vers et depuis les tables partitionnées plus efficacement, car vos données sont partitionnées de la même manière.

    Après avoir sélectionné la colonne de partitionnement et toute autre option, sélectionnez Suivant.

  5. Sur la page Sélectionner une fonction de partition, sous Sélectionner une fonction de partition, sélectionnez Nouvelle fonction de partition ou Fonction de partition existante. Si vous choisissez Nouvelle fonction de partition, entrez le nom de la fonction. Si vous choisissez Fonction de partition existante, sélectionnez le nom de la fonction que vous souhaitez utiliser dans la liste. L'option Fonction de partition existante ne sera pas disponible s'il n'existe aucune autre fonction de partition sur la base de données.

    Après avoir renseigné cette page, sélectionnez Suivant.

  6. Sur la page Sélectionner un schéma de partition, sous Sélectionner un schéma de partition, sélectionnez Nouveau schéma de partition ou Schéma de partition existant. Si vous choisissez Nouveau schéma de partition, entrez le nom du schéma. Si vous choisissez Schéma de partition existant, sélectionnez le nom du schéma que vous souhaitez utiliser dans la liste. L'option Schéma de partition existant ne sera pas disponible s'il n'existe aucun autre schéma de partition sur la base de données.

    Après avoir renseigné cette page, sélectionnez Suivant.

  7. Sur la page Mappage des partitions, sous Plage, sélectionnez Délimitation gauche ou Délimitation droite. La délimitation gauche spécifie que la valeur englobante la plus élevée sera incluse dans une partition. La délimitation droite spécifie que la valeur englobante la plus basse sera incluse dans chaque partition. Pour plus d’informations sur les plages de droite et de gauche, consultez la section Fonction de partition.

    Lorsque vous spécifiez plusieurs points de délimitation, vous devez toujours saisir une ligne supplémentaire en plus des lignes qui attribuent des valeurs de délimitation à un groupe de fichiers.

    Dans la grille Sélectionnez les groupes de fichiers et spécifiez les valeurs limites , sous Groupe de fichiers, sélectionnez le groupe de fichiers dans lequel vous souhaitez partitionner vos données. Sous Limite, entrez la valeur limite pour chaque groupe de fichiers. Si vous souhaitez attribuer plusieurs partitions ou toutes les partitions au même groupe de fichiers, sélectionnez le même nom de groupe de fichiers pour chaque ligne. Si vous sélectionnez un groupe de fichiers sur une seule ligne et que la valeur de délimitation est laissée vide, la fonction de partition mappe la table ou l’index entier dans une seule partition en utilisant le nom de la fonction de partition.

    Les options supplémentaires suivantes sont disponibles sur cette page :

    Définir les limites...
    Ouvre la boîte de dialogue Définir les valeurs limites pour sélectionner les valeurs limites et les plages de dates voulues pour vos partitions. Cette option est disponible uniquement quand vous avez sélectionné une colonne de partitionnement qui contient l’un des types de données suivants : date, datetime, smalldatetime, datetime2ou datetimeoffset.

    Estimer le stockage
    Estime le nombre de lignes, l'espace requis et l'espace disponible pour le stockage de chaque groupe de fichiers spécifié pour les partitions. Ces valeurs s'affichent dans la grille en tant que valeurs en lecture seule.

    La boîte de dialogue Définir les valeurs limites autorise les options supplémentaires suivantes :

    Date de début
    Sélectionne la date de début pour les valeurs de plages de vos partitions.

    Date de fin
    Sélectionne la date de fin pour les valeurs de plages de vos partitions. Si vous avez sélectionné l’option Limite gauche dans la page Associer les partitions , cette date est la dernière valeur de chaque groupe de fichiers/partition. Si vous avez sélectionné l’option Limite droite dans la page Associer les partitions , cette date est la première valeur du prochain groupe de fichiers.

    Plage de dates
    Sélectionne la granularité de date ou l'incrément de valeur de plage qui vous intéresse pour chaque partition.

    Après avoir renseigné cette page, sélectionnez Suivant.

  8. Sur la page Sélectionner une option de sortie , spécifiez de quelle manière vous souhaitez remplir votre table partitionnée. Sélectionnez Créer un script pour créer un script SQL basé sur les pages précédentes de l'Assistant. Sélectionnez Exécuter immédiatement pour créer la nouvelle table partitionnée après avoir complété toutes les pages restantes de l'Assistant. Sélectionnez Planification pour créer la nouvelle table partitionnée à un moment prédéterminé dans le futur.

    Si vous sélectionnez Créer un script, les options suivantes sont disponibles sous Options de script:

    Générer un script sur fichier
    Génère le script sous la forme d'un fichier .sql. Entrez un nom de fichier et un emplacement dans la boîte de dialogue Nom de fichier ou sélectionnez Parcourir pour ouvrir la boîte de dialogue Emplacement du fichier de script. Pour Enregistrer sous, sélectionnez Texte Unicode ou Texte ANSI.

    Générer un script sur le Presse-papiers
    Enregistre le script dans le Presse-papiers.

    Générer un script dans une nouvelle fenêtre de requête
    Génère le script dans une nouvelle fenêtre de l'éditeur de requêtes. Il s'agit de la sélection par défaut.

    Si vous sélectionnez Planification, sélectionnez Modifier la planification.

    1. Dans la boîte de dialogue Nouvelle planification du travail, dans la zone Nom, entrez le nom de la planification du travail.

    2. Dans la liste Type de planification , sélectionnez le type de la planification :

      • Lancer automatiquement au démarrage de SQL Server Agent

      • Démarrer dès que les processeurs sont inactifs

      • Périodique. Sélectionnez cette option si votre nouvelle table partitionnée est mise à jour régulièrement avec de nouvelles informations.

      • Une fois. Il s'agit de la sélection par défaut.

    3. Activez ou désactivez la case à cocher Activé pour activer ou désactiver la planification.

    4. Si vous sélectionnez Périodique:

      1. Sous Fréquence, dans la liste Périodicité , spécifiez la fréquence d'occurrence :

        • Si vous sélectionnez Quotidienne, dans la zone Répéter toutes les , entrez la fréquence de répétition du travail de planification en jours.

        • Si vous sélectionnez Hebdomadaire, dans la zone Répéter toutes les , entrez la fréquence de répétition du travail de planification en semaines. Sélectionnez le jour ou les jours de la semaine pendant lesquels la planification du travail est exécutée.

        • Si vous sélectionnez Mensuelle, sélectionnez Jour ou Le.

          • Si vous sélectionnez Jour, entrez la date du mois à laquelle vous souhaitez que la planification du travail s'exécute, ainsi que la fréquence de répétition de la planification du travail en mois. Par exemple, si vous souhaitez que la planification du travail s’exécute le 15 du mois un mois sur deux, sélectionnez Jour, puis entrez « 15 » dans la première zone et « 2 » dans la deuxième zone. Le nombre maximum autorisé dans la deuxième zone est « 99 ».

          • Si vous sélectionnez Le, sélectionnez le jour spécifique de la semaine et du mois pendant lequel vous voulez que la planification du travail s'exécute et la fréquence à laquelle la planification du travail doit se répéter en mois. Par exemple, si vous souhaitez que la planification du travail s’exécute le dernier jour de la semaine un mois sur deux, sélectionnez Jour, puis dernier dans la première liste, jour ouvrable dans la deuxième liste et « 2 » dans la dernière zone. Vous pouvez également sélectionner premier, deuxième, troisièmeou quatrième, ainsi que des jours de la semaine spécifiques (par exemple, dimanche ou mercredi) dans les deux premières listes. Le nombre maximum autorisé dans la dernière zone est « 99 ».

      2. Sous Fréquence quotidienne, spécifiez la fréquence à laquelle la planification du travail se répète le jour de son exécution :

        • Si vous sélectionnez Une fois à, entrez l'heure spécifique à laquelle la planification du travail doit s'exécuter dans la zone Une fois à . Entrez l'heure, les minutes et les secondes du jour, ainsi que AM ou PM.

        • Si vous sélectionnez Toutes les, spécifiez la fréquence à laquelle la planification du travail s'exécute pendant la journée choisie sous Fréquence. Par exemple, si vous souhaitez que la planification du travail se répète toutes les 2 heures le jour d’exécution de la planification du travail, sélectionnez Toutes les, entrez « 2 » dans la première zone, puis sélectionnez heure(s) dans la liste. Dans cette liste, vous pouvez également sélectionner minute(s) et seconde(s) . Le nombre maximum autorisé dans la première zone est « 100 ».

          Dans la zone Début , entrez l'heure à laquelle l'exécution de la planification du travail doit démarrer. Dans la zone Fin , entrez l'heure à laquelle la planification du travail doit s'arrêter. Entrez l'heure, les minutes et les secondes du jour, ainsi que AM ou PM.

      3. Sous Durée, dans la zone Date de début, entrez la date à laquelle vous souhaitez que l'exécution de la planification du travail commence. Sélectionnez Date de fin ou Aucune date de fin pour indiquer à quel moment l'exécution de la planification du travail doit s'arrêter. Si vous sélectionnez Date de fin, entrez la date à laquelle l'exécution de la planification du travail doit s'arrêter.

    5. Si vous sélectionnez Une foissous Une seule occurrence, dans la zone Date , entrez la date à laquelle la planification du travail est exécutée. Dans la zone Heure , entrez l'heure à laquelle la planification du travail sera exécutée. Entrez l'heure, les minutes et les secondes du jour, ainsi que AM ou PM.

    6. Sous Résumé, dans Description, vérifiez que tous les paramètres de planification du travail sont corrects.

    7. Sélectionnez OK.

    Après avoir renseigné cette page, sélectionnez Suivant.

  9. Dans la page Vérifier le résumé , sous Vérifier vos sélections, développez toutes les options disponibles pour vérifier que tous les paramètres de partition sont corrects. Si tout est conforme à vos attentes, sélectionnez Terminer.

  10. Sur la page Progression de l'Assistant Création de partition , surveillez les informations d'état relatives aux actions de l'Assistant Création de partition. Selon les options sélectionnées dans l'Assistant, la page de progression peut contenir une ou plusieurs actions. La zone supérieure affiche l'état global de l'Assistant et le nombre des messages d'état, d'erreur et d'avertissement qu'il a reçus.

    Les options suivantes sont disponibles sur la page Progression de l'Assistant Création de partition :

    Détails
    Indique l'action, l'état et tous les messages retournés suite à l'action entreprise par l'Assistant.

    Action
    Indique le type et le nom de chaque action.

    État
    Indique si l’action de l’Assistant dans son ensemble a retourné la valeur Réussite ou Échec.

    Message
    Indique les messages d'erreur ou d'avertissement retournés par le processus.

    Report
    Crée un rapport qui contient les résultats de l'Assistant Création de partition. Les options sont Afficher le rapport, Enregistrer le rapport dans un fichier, Copier le rapport dans le Presse-papierset Envoyer le rapport sous forme de courrier électronique.

    Afficher le rapport
    Ouvre la boîte de dialogue Afficher le rapport , qui contient un rapport au format texte de la progression de l’Assistant Création de partition.

    Enregistrer le rapport dans un fichier
    Ouvre la boîte de dialogue Enregistrer le rapport sous .

    Copier le rapport dans le Presse-papiers
    Copie les résultats du rapport de progression de l’Assistant dans le Presse-papiers.

    Envoyer le rapport sous forme de courrier électronique
    Copie les résultats du rapport de progression de l’Assistant dans un e-mail.

    Quand vous avez terminé, sélectionnez Fermer.

L’Assistant Création de partition crée la fonction de partition et le schéma, puis applique le partitionnement à la table spécifiée. Pour vérifier le partitionnement de table, dans l’Explorateur d’objets, cliquez avec le bouton droit sur la table et sélectionnez Propriétés. Sélectionnez la page Stockage. La page affiche des informations telles que le nom de la fonction de partition et du schéma, ainsi que le nombre de partitions.

Interrogation des métadonnées des tables et index partitionnés

Vous pouvez interroger les métadonnées pour déterminer si une table est partitionnée, les points de délimitation d’une table partitionnée, la colonne de partitionnement d’une table partitionnée, le nombre de lignes dans chaque partition et si la compression des données a été mise en œuvre sur les partitions.

Déterminer si une table est partitionnée

La requête suivante renvoie une ou plusieurs lignes si la table PartitionTable est partitionnée ou si les index non groupés de la table sont partitionnés. Si la table n’est pas partitionnée et qu’aucun index non cluster sur la table n’est partitionné, aucune ligne n’est renvoyée.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, *
FROM sys.tables AS t
JOIN sys.indexes AS i
    ON t.[object_id] = i.[object_id]
JOIN sys.partition_schemes ps
    ON i.data_space_id = ps.data_space_id
WHERE t.name = 'PartitionTable';
GO

Détermination des valeurs de délimitation d’une table partitionnée

La requête suivante renvoie les valeurs limites pour chaque partition de la table PartitionTable .

La requête utilise la colonne type dans sys.indexes pour renvoyer uniquement des informations pour l’index cluster de la table, ou pour la table de base si la table est un segment de mémoire. Pour inclure tous les index non cluster partitionnés dans les résultats de la requête, supprimez ou commentez la requête AND i.type <= 1.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName,
    p.partition_number, p.partition_id, i.data_space_id, f.function_id, f.type_desc,
    r.boundary_id, r.value AS BoundaryValue
FROM sys.tables AS t
JOIN sys.indexes AS i
    ON t.object_id = i.object_id
JOIN sys.partitions AS p
    ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN  sys.partition_schemes AS s
    ON i.data_space_id = s.data_space_id
JOIN sys.partition_functions AS f
    ON s.function_id = f.function_id
LEFT JOIN sys.partition_range_values AS r
    ON f.function_id = r.function_id and r.boundary_id = p.partition_number
WHERE
    t.name = 'PartitionTable'
    AND i.type <= 1
ORDER BY SchemaName, t.name, i.name, p.partition_number;

Déterminer la colonne de partition pour une table partitionnée

La requête suivante renvoie le nom de la colonne de partitionnement pour la table PartitionTable.

La requête utilise la colonne type dans sys.indexes pour renvoyer uniquement des informations pour l’index cluster de la table, ou pour la table de base si la table est un segment de mémoire. Pour inclure tous les index non cluster partitionnés dans les résultats de la requête, supprimez ou commentez la requête AND i.type <= 1.

SELECT
    t.[object_id] AS ObjectID
    , SCHEMA_NAME(t.schema_id) AS SchemaName
    , t.name AS TableName
    , ic.column_id AS PartitioningColumnID
    , c.name AS PartitioningColumnName
    , i.name as IndexName
FROM sys.tables AS t
JOIN sys.indexes AS i
    ON t.[object_id] = i.[object_id]
    AND i.[type] <= 1 -- clustered index or a heap
JOIN sys.partition_schemes AS ps
    ON ps.data_space_id = i.data_space_id
JOIN sys.index_columns AS ic
    ON ic.[object_id] = i.[object_id]
    AND ic.index_id = i.index_id
    AND ic.partition_ordinal >= 1 -- because 0 = non-partitioning column
JOIN sys.columns AS c
    ON t.[object_id] = c.[object_id]
    AND ic.column_id = c.column_id
WHERE t.name = 'PartitionTable';
GO

Détermination des lignes qui décrivent la plage de valeurs possible dans chaque partition

La requête suivante renvoie les lignes par partition pour la table PartitionTable, ainsi qu’une description des « opérateurs de comparaison » pour la fonction de partition utilisée. Requête d’origine fournie par Kalen Delaney.

La requête utilise la colonne type dans sys.indexes pour renvoyer uniquement des informations pour l’index cluster de la table, ou pour la table de base si la table est un segment de mémoire. Pour inclure tous les index non cluster partitionnés dans les résultats de la requête, supprimez ou commentez la requête AND i.type <= 1.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName,
    p.partition_number AS PartitionNumber, f.name AS PartitionFunctionName, p.rows AS Rows, rv.value AS BoundaryValue,
CASE WHEN ISNULL(rv.value, rv2.value) IS NULL THEN 'N/A'
ELSE
    CASE WHEN f.boundary_value_on_right = 0 AND rv2.value IS NULL THEN '>='
        WHEN f.boundary_value_on_right = 0 THEN '>'
        ELSE '>='
    END + ' ' + ISNULL(CONVERT(varchar(64), rv2.value), 'Min Value') + ' ' +
        CASE f.boundary_value_on_right WHEN 1 THEN 'and <'
                ELSE 'and <=' END
        + ' ' + ISNULL(CONVERT(varchar(64), rv.value), 'Max Value')
END AS TextComparison
FROM sys.tables AS t
JOIN sys.indexes AS i
    ON t.object_id = i.object_id
JOIN sys.partitions AS p
    ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN  sys.partition_schemes AS s
    ON i.data_space_id = s.data_space_id
JOIN sys.partition_functions AS f
    ON s.function_id = f.function_id
LEFT JOIN sys.partition_range_values AS r
    ON f.function_id = r.function_id and r.boundary_id = p.partition_number
LEFT JOIN sys.partition_range_values AS rv
    ON f.function_id = rv.function_id
    AND p.partition_number = rv.boundary_id
LEFT JOIN sys.partition_range_values AS rv2
    ON f.function_id = rv2.function_id
    AND p.partition_number - 1= rv2.boundary_id
WHERE
    t.name = 'PartitionTable'
    AND i.type <= 1
ORDER BY t.name, p.partition_number;

La colonne TextComparison décrit la plage de valeurs possible dans chaque partition en fonction de la définition de la fonction de partition. Voici une vue des exemples de résultats de la requête :

Nom du schéma TableName IndexName PartitionNumber PartitionFunctionName rows BoundaryValue TextComparison
dbo PartitionTable PK_PartitionTable 1 PFTest 0 2022-03-01 00:00:00.000 > = Valeur minimale et < 1er mars 2022 00h00
dbo PartitionTable PK_PartitionTable 2 PFTest 2 2022-04-01 00:00:00.000 > = 1er mars 2022 00h00 et < 1er avril 2022 00h00
dbo PartitionTable PK_PartitionTable 3 PFTest 1 2022-05-01 00:00:00.000 > = 1er avril 2022 00h00 et < 1er mai 2022 00h00
dbo PartitionTable PK_PartitionTable 4 PFTest 0 2022-06-01 00:00:00.000 > = 1er mai 2022 00h00 et < 1er juin 2022 00h00
dbo PartitionTable PK_PartitionTable 5 PFTest 1 2022-07-01 00:00:00.000 > = 1er juin 2022 00h00 et < 1er juillet 2022 00h00
dbo PartitionTable PK_PartitionTable 6 PFTest 0 NULL > = 1er juillet 2022 00h00 et < Valeur maximale

Limites

Pour plus d’informations sur les limitations et les implications sur les performances du partitionnement, consultez la section Limitations