Réduire une base de données

Cette rubrique explique comment réduire une base de données au moyen de l'Explorateur d'objets dans SQL Server 2012 à l'aide de SQL Server Management Studio ou de Transact-SQL.

La réduction des fichiers de données permet de récupérer de l'espace en déplaçant des pages de données de la fin du fichier vers un espace inoccupé plus proche de l'avant du fichier. Lorsqu'une quantité d'espace libre suffisante est créée à la fin du fichier, des pages de données à la fin du fichier peuvent être désallouées et retournées au système de fichiers.

Dans cette rubrique

  • Avant de commencer :

    Limitations et restrictions

    Recommandations

    Sécurité

  • Pour réduire une base de données, utilisez :

    SQL Server Management Studio

    Transact-SQL

  • Suivi :  Vous réduisez une base de données

Avant de commencer

Limitations et restrictions

  • La base de données ne peut pas être réduite à une taille inférieure à la taille minimale de la base de données. La taille minimale d'une base de données correspond à la taille spécifiée lors de sa création ou lors de la dernière définition de taille explicite lors d'une opération de modification de taille, notamment au moyen de DBCC SHRINKFILE. Par exemple, la plus petite taille que pourrait avoir une base de données de 10 Mo initialement et de 100 Mo avant réduction, même si toutes les données qu'elle contient ont été supprimées, est de 10 Mo après réduction.

  • Vous ne pouvez pas réduire la taille d'une base de données en cours de sauvegarde. Inversement, vous ne pouvez pas sauvegarder une base de données alors qu'elle fait l'objet d'une opération de réduction.

  • DBCC SHRINKDATABASE échoue lorsqu'il rencontre un index columnstore optimisé en mémoire xVelocity. Le travail effectué avant de rencontrer l'index columnstore réussit, de sorte que la base de données peut être plus petite. Pour exécuter DBCC SHRINKDATABASE, désactivez tous les index columnstore avant d'exécuter DBCC SHRINKDATABASE, puis reconstruisez les index.

Recommandations

  • Pour visualiser la quantité d'espace actuellement libre (non allouée) dans la base de données. Pour plus d'informations, consultez Afficher les informations sur l'espace occupé par les données et par le journal d'une base de données.

  • Prenez en compte les informations suivantes lorsque vous envisagez de réduire une base de données :

    • Une opération de réduction de taille de fichier est plus efficace après l'exécution d'une opération qui crée une grande quantité d'espace inutilisé, telle qu'une troncature de table ou une suppression de table.

    • Un certain espace libre doit exister pour les opérations quotidiennes courantes pour la plupart des bases de données. Si vous réduisez plusieurs fois la taille d'une base de données et que vous constatez que la taille augmente de nouveau, cela indique que l'espace qui a été réduit est nécessaire pour les opérations courantes. Dans ce cas, la réduction de la taille de la base de données ne sert à rien.

    • Une opération de réduction ne conserve pas l'état de fragmentation des index de la base de données, et augmente généralement la fragmentation. Il s'agit là d'une raison supplémentaire pour ne pas réduire la taille de la base de données de manière répétitive.

    • Sauf en cas de besoin précis, n'attribuez pas la valeur ON à l'option de base de données AUTO_SHRINK.

Sécurité

Autorisations

Nécessite l'appartenance au rôle de serveur fixe sysadmin ou au rôle de base de données fixe db_owner.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Utilisation de SQL Server Management Studio

Pour réduire une base de données

  1. Dans l'Explorateur d'objets, connectez-vous à une instance du Moteur de base de données SQL Server et développez-la.

  2. Développez Bases de données, puis cliquez avec le bouton droit sur la base de données à réduire.

  3. Pointez sur Tâches puis sur Réduire, puis cliquez sur Base de données.

    • Base de données
      Affiche le nom de la base de données sélectionnée.

    • Espace actuellement alloué
      Affiche l'espace total, utilisé et non utilisé, pour la base de données sélectionnée.

    • Espace libre disponible
      Affiche la totalité de l'espace disponible dans les fichiers de données et les fichiers journaux de la base de données sélectionnée.

    • Réorganiser les fichiers avant de libérer de l'espace inutilisé
      Activer cette option équivaut à exécuter DBCC SHRINKDATABASE en spécifiant une option de pourcentage cible. Désactiver cette option équivaut à exécuter DBCC SHRINKDATABASE avec l'option TRUNCATEONLY. Par défaut, cette option n'est pas sélectionnée à l'ouverture de la boîte de dialogue. Si cette option est sélectionnée, l'utilisateur doit spécifier une option de pourcentage cible.

    • Espace libre maximal dans les fichiers après réduction
      Entrez le pourcentage maximal d'espace disponible à conserver dans les fichiers de base de données après la réduction de la base de données. Les valeurs autorisées sont comprises entre 0 et 99.

  4. Cliquez sur OK.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Utilisation de Transact-SQL

Pour réduire une base de données

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter. L'exemple suivant utilise DBCC SHRINKDATABASE pour diminuer la taille des fichiers de données et journaux de la base de données utilisateur UserDB pour obtenir 10 % d'espace libre dans la base de données.

DBCC SHRINKDATABASE (UserDB, 10);
GO

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Suivi : Après avoir réduit une base de données

Les données qui sont déplacées pour réduire un fichier peuvent être dispersées à n'importe quel emplacement disponible dans le fichier. Cela provoque la fragmentation de l'index et peut ralentir les performances des requêtes qui recherchent une plage de l'index. Pour éliminer la fragmentation, reconstruisez les index dans le fichier après réduction.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Voir aussi

Référence

sys.databases (Transact-SQL)

sys.database_files (Transact-SQL)

DBCC (Transact-SQL)

DBCC SHRINKFILE (Transact-SQL)

Concepts

Réduire un fichier

Groupes de fichiers et fichiers de base de données