Créer des tables et des index partitionnés

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Vous pouvez créer une table ou un index partitionné dans SQL Server, Azure SQL Database et Azure SQL Managed Instance à l’aide de SQL Server Management Studio ou de Transact-SQL. Les données des tables et des index partitionnés sont divisées horizontalement en unités pouvant être réparties sur plusieurs groupes de fichiers d’une base de données ou stockées dans un même 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 produit généralement en trois ou quatre parties :

  1. Si vous le souhaitez, créez un groupe de fichiers ou des groupes de fichiers et des fichiers de données correspondants qui contiennent les partitions spécifiées par le schéma de partition. La principale raison de placer des partitions sur plusieurs groupes de fichiers est de vous assurer que vous pouvez effectuer des opérations de sauvegarde et de restauration indépendamment sur les groupes de fichiers. Si ce n’est pas nécessaire, vous pouvez choisir d’affecter toutes les partitions à un groupe de fichiers unique, à l’aide d’un groupe de fichiers existant, tel que PRIMARY, ou d’un nouveau groupe de fichiers avec des 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 en fonction des valeurs d’une colonne spécifiée. Vous pouvez utiliser une fonction de partition unique 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 groupe de fichiers ou à plusieurs groupes de fichiers. Vous pouvez utiliser un schéma de partition unique 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.

Note

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

Le partitionnement de tables est également disponible dans les pools SQL dédiés dans Azure Synapse Analytics, avec certaines différences de syntaxe. En savoir plus sur le 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éer 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 groupe de fichiers unique simplifie la gestion de la table partitionnée au fil du temps.

Cet exemple convient à Azure SQL Database, qui ne prend pas en charge 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 PRIMARY groupe de fichiers. Pour SQL Server et Azure SQL Managed Instance, vous pouvez spécifier un groupe de fichiers créé par l’utilisateur, en fonction de vos pratiques de gestion de fichiers et de groupe de fichiers.

L’exemple de procédure de création d’une table partitionnée dans SQL Server Management Studio (SSMS) à l’aide de Transact-SQL et affecte toutes les partitions au PRIMARY groupe de fichiers. L'exemple :

  • Crée une fonction de partition RANGE RIGHT nommée myRangePF1 avec trois valeurs de limite à l’aide du type de données datetime2 . Trois valeurs de limite entraînent une table partitionnée avec quatre partitions.
  • Crée un schéma de partition nommé myRangePS1 qui utilise la ALL TO syntaxe pour affecter toutes les partitions de la myRangePF1 fonction de partition au PRIMARY groupe de fichiers.
  • Crée une table nommée PartitionTable sur le myRangePS1 schéma de partition, 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éer une table partitionnée sur plusieurs groupes de fichiers avec Transact-SQL

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

SQL Server et Azure SQL Managed Instance prennent 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 ALTER DATABASE ADD FILE commande dans Azure SQL Managed Instance n’autorise pas le FILENAME paramètre. Azure SQL Database prend en charge la création de tables partitionnée uniquement dans le groupe de PRIMARY fichiers. Recherchez un exemple de code pour Azure SQL Database dans Créer 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 limite qui partitionnent une table en quatre partitions.
  • Crée un schéma de partition appelé myRangePS1 qui s’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 base de données et l’utilise. Il crée ensuite de nouveaux 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, supprimez le paramètre et la FILENAME valeur associée de la ALTER DATABASE ADD FILE commande. L’instance managée détermine automatiquement le chemin d’accès au fichier.

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

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

    SELECT Execute.

    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  
    

Partitionner 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 d’une partition dans SQL Server Management Studio (SSMS). L’Assistant Création d’une partition est disponible dans SSMS pour SQL Server et Azure SQL Managed Instance. Pour Azure SQL Database, reportez-vous à Créer une table partitionnée sur un groupe de fichiers à l’aide de Transact-SQL.

Créer des 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 en charge la création de groupes de fichiers et de fichiers. Pour Azure SQL Managed Instance, le chemin d’accès des fichiers créés sera automatiquement configuré pour vous.

  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 table ou les tables partitionnée.

  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. Si vous le souhaitez, développez le dossier Tables et créez une table comme vous le feriez normalement. Pour plus d’informations, consultez Créer des tables (moteur de base de données). Vous pouvez également spécifier une table existante à l’étape suivante.

  2. Cliquez avec le bouton droit sur la table à partitionner, pointez sur Stockage, puis sélectionnez Créer une partition....

  3. Dans l’Assistant Création d’une partition, dans la page Bienvenue dans l’AssistantCréation d’une 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, la 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étermineront 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 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. Lorsqu’une table et ses index sont alignés, vous pouvez déplacer des partitions dans et hors des tables partitionnée plus efficacement, car vos données sont partitionnée de la même façon.

    Après avoir sélectionné la colonne de partitionnement et toutes les autres options, sélectionnez Suivant.

  5. Dans 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. Dans 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. Dans la page Partitions de mappage, sous Plage, sélectionnez limite gauche ou limite droite. La limite de gauche spécifie que la valeur englobante la plus élevée sera incluse dans une partition. La limite de droite spécifie que la valeur englobante la plus basse sera incluse dans chaque partition. En savoir plus sur les plages de droite et de gauche dans la fonction Partition.

    Lorsque vous spécifiez plusieurs points de limite, vous devez toujours entrer une ligne supplémentaire en plus des lignes qui attribuent des valeurs de limite à 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 affecter 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 limite est laissée vide, la fonction de partition mappe l’ensemble de la table ou de l’index dans une seule partition à l’aide du 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 plus grand nombre 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 plus grand nombre 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 plus grand nombre 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 d’une 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.

Interroger les 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 limite d’une table partitionnée, la colonne de partitionnement d’une table partitionnée, le nombre de lignes de chaque partition et si la compression des données a été implémentée sur les partitions.

Déterminer si une table est partitionnée

La requête suivante retourne une ou plusieurs lignes si la table PartitionTable est partitionnée, ou si des index non cluster sur 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 retourné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éterminer les valeurs de limite 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 type colonne dans sys.indexes pour retourner uniquement des informations pour l’index cluster de la table, ou pour la table de base si la table est un tas. Pour inclure tous les index non cluster partitionnés dans les résultats de la requête, supprimez ou commentez AND i.type <= 1 la requête.

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 type colonne dans sys.indexes pour retourner uniquement des informations pour l’index cluster de la table, ou pour la table de base si la table est un tas. Pour inclure tous les index non cluster partitionnés dans les résultats de la requête, supprimez ou commentez AND i.type <= 1 la requête.


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éterminer les lignes décrivent la plage de valeurs possible dans chaque partition

La requête suivante retourne les lignes par partition pour la table PartitionTableet une description des « opérateurs de comparaison » pour la fonction de partition en cours d’utilisation. Requête d’origine fournie par Kalen Delaney.

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

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 TextComparison colonne 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 :

SchemaName 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 12:00AM
dbo PartitionTable PK_PartitionTable 2 PFTest 2 2022-04-01 00:00:00.000 >= 1er mars 2022 12:00 ET < 1er avril 2022 12:00AM
dbo PartitionTable PK_PartitionTable 3 PFTest 1 2022-05-01 00:00:00.000 >= 1er avril 2022 12:00 ET < 1er mai 2022 12:00AM
dbo PartitionTable PK_PartitionTable 4 PFTest 0 2022-06-01 00:00:00.000 >= 1er mai 2022 12:00AM et < Juin 1 2022 12:00AM
dbo PartitionTable PK_PartitionTable 5 PFTest 1 2022-07-01 00:00:00.000 >= 1er juin 2022 12:00 ET < Juillet 1 2022 12:00AM
dbo PartitionTable PK_PartitionTable 6 PFTest 0 NULL >= 1er juillet 2022 12:00AM et < Valeur maximale

Limitations

En savoir plus sur les limitations ainsi que les considérations relatives aux performances pour le partitionnement dans limitations

Étapes suivantes

En savoir plus sur les concepts associés dans les articles suivants :