Partager via


Réduire une base de données

Cette rubrique explique comment réduire une base de données à l’aide de l’objet dans SQL Server 2014 à 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. Lorsque suffisamment d’espace libre est créé à la fin du fichier, les pages de données à la fin du fichier peuvent être libérées et retournées au système de fichiers.

Avant de commencer

Limitations et restrictions

  • La base de données ne peut pas être réduite à la taille minimale de la base de données. La taille minimale est la taille spécifiée lorsque la base de données a été créée à l’origine, ou la dernière taille explicite définie à l’aide d’une opération de modification de taille de fichier, telle que DBCC SHRINKFILE. Par exemple, si une base de données a été créée à l’origine avec une taille de 10 Mo et a augmenté de 100 Mo, la plus petite taille de la base de données peut être réduite à 10 Mo, même si toutes les données de la base de données ont été supprimées.

  • Vous ne pouvez pas réduire une base de données pendant la sauvegarde de la base de données. À l’inverse, vous ne pouvez pas sauvegarder une base de données pendant qu’une opération de réduction sur la base de données est en cours.

  • DBCC SHRINKDATABASE échoue lorsqu’il rencontre un index columnstore optimisé en mémoire xVelocity. Le travail terminé avant d'accéder à l'index columnstore aboutit, ce qui peut réduire la taille de la base de données. Pour terminer DBCC SHRINKDATABASE, désactivez tous les index columnstore avant d’exécuter DBCC SHRINKDATABASE, puis régénérez les index columnstore.

Recommandations

  • Pour afficher la quantité actuelle d’espace libre (non alloué) dans la base de données. Pour plus d’informations, consultez Afficher les informations d’espace de données et de journal pour 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 est la plus efficace après une opération qui crée beaucoup d’espace inutilisé, telle qu'une opération de troncature de table ou de 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 une base de données à plusieurs reprises et notez que la taille de la base de données augmente à nouveau, cela indique que l’espace qui a été réduit est requis pour les opérations régulières. Dans ce cas, la réduction répétée de la base de données est une opération perdue.

    • Une opération de réduction ne conserve pas l’état de fragmentation des index dans la base de données et augmente généralement la fragmentation à un degré. Il s’agit d’une autre raison de ne pas réduire à plusieurs reprises la base de données.

    • Sauf si vous avez une exigence spécifique, ne définissez pas l’option de base de données AUTO_SHRINK sur ON.

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 .

Utilisation de SQL Server Management Studio

Pour réduire une base de données

  1. Dans 'Explorateur d’objets, connectez-vous à une instance du moteur de base de données SQL Server, puis développez cette instance.

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

  3. Pointez sur Tâches, pointez 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 alloué actuel
    Affiche l’espace total utilisé et inutilisé pour la base de données sélectionnée.

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

    Réorganiser les fichiers avant de libérer de l’espace inutilisé
    La sélection de cette option équivaut à exécuter DBCC SHRINKDATABASE en spécifiant une option de pourcentage cible. L’effacement de cette option équivaut à exécuter DBCC SHRINKDATABASE avec l’option TRUNCATEONLY. Par défaut, cette option n’est pas sélectionnée lorsque la boîte de dialogue est ouverte. 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 la réduction
    Entrez le pourcentage maximal d’espace libre à laisser dans les fichiers de base de données une fois la base de données réduite. Les valeurs autorisées sont comprises entre 0 et 99.

  4. Cliquez sur OK.

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. Cet exemple utilise DBCC SHRINKDATABASE pour réduire la taille des fichiers de données et des fichiers journaux de la UserDB base de données et permettre 10 un pourcentage d’espace libre dans la base de données.

DBCC SHRINKDATABASE (UserDB, 10);
GO

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.

Voir aussi

Réduire un fichier
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)
DBCC (Transact-SQL)
DBCC SHRINKFILE (Transact-SQL)
Groupes de fichiers et fichiers de base de données