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 :
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.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.
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.
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 laALL TO
syntaxe pour affecter toutes les partitions de lamyRangePF1
fonction de partition auPRIMARY
groupe de fichiers. - Crée une table nommée
PartitionTable
sur lemyRangePS1
schéma de partition, en spécifiant une colonne nomméecol1
comme colonne de partitionnement.
Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.
Dans la barre d’outils standard, sélectionnez Nouvelle requête.
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’appliquemyRangePF1
aux quatre nouveaux groupes de fichiers. - Crée une table partitionnée appelée
PartitionTable
qui utilisemyRangePS1
pour partitionnercol1
.
Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.
Dans la barre d’outils standard, sélectionnez Nouvelle requête.
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 laALTER 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’instructionUSE
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.
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.
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.
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.
Continuez à ajouter des lignes jusqu’à ce que vous ayez créé tous les groupes de fichiers pour la table ou les tables partitionnée.
Cliquez sur OK.
Sous Sélectionner une page, sélectionnez Fichiers.
Sous Lignes, sélectionnez Ajouter. Dans la nouvelle ligne, entrez un nom de fichier et sélectionnez un groupe de fichiers.
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
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.
Cliquez avec le bouton droit sur la table à partitionner, pointez sur Stockage, puis sélectionnez Créer une partition....
Dans l’Assistant Création d’une partition, dans la page Bienvenue dans l’AssistantCréation d’une partition, sélectionnez Suivant.
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.
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.
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.
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.
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.
Dans la boîte de dialogue Nouvelle planification du travail, dans la zone Nom, entrez le nom de la planification du travail.
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.
Activez ou désactivez la case à cocher Activé pour activer ou désactiver la planification.
Si vous sélectionnez Périodique:
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 ».
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.
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.
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.
Sous Résumé, dans Description, vérifiez que tous les paramètres de planification du travail sont corrects.
Sélectionnez OK.
Après avoir renseigné cette page, sélectionnez Suivant.
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.
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 PartitionTable
et 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 :
- Tables et index partitionnés
- Scale-out avec Azure SQL Database
- Partitionnement de tables dans un pool SQL dédié
- Guide de conception et d’architecture d’index SQL Server et Azure SQL
- Options de fichiers et de groupes de fichiers ALTER DATABASE (Transact-SQL)
- CREATE PARTITION FUNCTION (Transact-SQL)
- CREATE PARTITION SCHEME (Transact-SQL)
- CREATE TABLE (Transact-SQL)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour