Réduire une base de donnéesShrink a Database

Cette rubrique explique comment réduire une base de données au moyen de l'Explorateur d'objets dans SQL Server 2016SQL Server 2016 à l'aide de SQL Server Management StudioSQL Server Management Studio ou de Transact-SQLTransact-SQL.This topic describes how to shrink a database by using Object in SQL Server 2016SQL Server 2016 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-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.Shrinking data files recovers space by moving pages of data from the end of the file to unoccupied space closer to the front of the file. Quand 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.When enough free space is created at the end of the file, data pages at end of the file can be deallocated and returned to the file system.

Dans cette rubriqueIn This Topic

Avant de commencer Before You Begin

Limitations et restrictions Limitations and 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.The database cannot be made smaller than the minimum size of the database. 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.The minimum size is the size specified when the database was originally created, or the last explicit size set by using a file-size-changing operation, such as 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.For example, if a database was originally created with a size of 10 MB and grew to 100 MB, the smallest size the database could be reduced to is 10 MB, even if all the data in the database has been deleted.

  • Vous ne pouvez pas réduire la taille d'une base de données en cours de sauvegarde.You cannot shrink a database while the database is being backed up. Inversement, vous ne pouvez pas sauvegarder une base de données alors qu'elle fait l'objet d'une opération de réduction.Conversely, you cannot backup a database while a shrink operation on the database is in process.

  • DBCC SHRINKDATABASE échoue lorsqu'il rencontre un index columnstore optimisé en mémoire xVelocity.DBCC SHRINKDATABASE will fail when it encounters an xVelocity memory optimized columnstore index. Le travail effectué avant de rencontrer l'index columnstore réussit, de sorte que la base de données peut être plus petite.Work completed before encountering the columnstore index will succeed so the database might be smaller. Pour exécuter DBCC SHRINKDATABASE, désactivez tous les index columnstore avant d'exécuter DBCC SHRINKDATABASE, puis reconstruisez les index.To complete DBCC SHRINKDATABASE, disable all columnstore indexes before executing DBCC SHRINKDATABASE, and then rebuild the columnstore indexes.

Recommandations Recommendations

  • Pour visualiser la quantité d'espace actuellement libre (non allouée) dans la base de données.To view the current amount of free (unallocated) space in the database. Pour plus d'informations, consultez Display Data and Log Space Information for a DatabaseFor more information, see Display Data and Log Space Information for a Database

  • Prenez en compte les informations suivantes lorsque vous envisagez de réduire une base de données :Consider the following information when you plan to shrink a database:

    • 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.A shrink operation is most effective after an operation that creates lots of unused space, such as a truncate table or a drop table operation.

    • Un certain espace libre doit exister pour les opérations quotidiennes courantes pour la plupart des bases de données.Most databases require some free space to be available for regular day-to-day operations. 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.If you shrink a database repeatedly and notice that the database size grows again, this indicates that the space that was shrunk is required for regular operations. Dans ce cas, la réduction de la taille de la base de données ne sert à rien.In these cases, repeatedly shrinking the database is a wasted operation.

    • 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.A shrink operation does not preserve the fragmentation state of indexes in the database, and generally increases fragmentation to a degree. 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.This is another reason not to repeatedly shrink the database.

    • Sauf en cas de besoin précis, n'attribuez pas la valeur ON à l'option de base de données AUTO_SHRINK.Unless you have a specific requirement, do not set the AUTO_SHRINK database option to ON.

Sécurité Security

Autorisations Permissions

Nécessite l’appartenance au rôle de serveur fixe sysadmin ou au rôle de base de données fixe db_owner .Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

Utilisation de SQL Server Management Studio Using SQL Server Management Studio

Pour réduire une base de donnéesTo shrink a database

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données SQL ServerSQL Server Database Engine, puis développez-la.In Object Explorer, connect to an instance of the Moteur de base de données SQL ServerSQL Server Database Engine, and then expand that instance.

  2. Développez Bases de données, puis cliquez avec le bouton droit sur la base de données à réduire.Expand Databases, and then right-click the database that you want to shrink.

  3. Pointez sur Tâchespuis sur Réduire, puis cliquez sur Base de données.Point to Tasks, point to Shrink, and then click Database.

    Base de donnéesDatabase
    Affiche le nom de la base de données sélectionnée.Displays the name of the selected database.

    Espace actuellement allouéCurrent allocated space
    Affiche l'espace total, utilisé et non utilisé, pour la base de données sélectionnée.Displays the total used and unused space for the selected database.

    Espace libre disponibleAvailable free space
    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.Displays the sum of free space in the log and data files of the selected database.

    Réorganiser les fichiers avant de libérer de l'espace inutiliséReorganize files before releasing unused space
    Activer cette option équivaut à exécuter DBCC SHRINKDATABASE en spécifiant une option de pourcentage cible.Selecting this option is equivalent to executing DBCC SHRINKDATABASE specifying a target percent option. Désactiver cette option équivaut à exécuter DBCC SHRINKDATABASE avec l'option TRUNCATEONLY.Clearing this option is equivalent to executing DBCC SHRINKDATABASE with TRUNCATEONLY option. Par défaut, cette option n'est pas sélectionnée à l'ouverture de la boîte de dialogue.By default, this option is not selected when the dialog is opened. Si cette option est sélectionnée, l'utilisateur doit spécifier une option de pourcentage cible.If this option is selected, the user must specify a target percent option.

    Espace libre maximal dans les fichiers après réductionMaximum free space in files after shrinking
    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.Enter the maximum percentage of free space to be left in the database files after the database has been shrunk. Les valeurs autorisées sont comprises entre 0 et 99.Permissible values are between 0 and 99.

  4. Cliquez sur OK.Click OK.

Utilisation de Transact-SQL Using Transact-SQL

Pour réduire une base de donnéesTo shrink a database

  1. Connectez-vous au Moteur de base de donnéesDatabase Engine.Connect to the Moteur de base de donnéesDatabase Engine.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.From the Standard bar, click New Query.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.Copy and paste the following example into the query window and click Execute. 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.This example uses DBCC SHRINKDATABASE to decreases the size of the data and log files in the UserDB database and to allow for 10 percent free space in the database.

    DBCC SHRINKDATABASE (UserDB, 10);
    GO
    

Suivi : Après avoir réduit une base de données Follow Up: After you shrink a database

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.Data that is moved to shrink a file can be scattered to any available location in the file. Cela provoque la fragmentation de l'index et peut ralentir les performances des requêtes qui recherchent une plage de l'index.This causes index fragmentation and can slow the performance of queries that search a range of the index. Pour éliminer la fragmentation, reconstruisez les index dans le fichier après réduction.To eliminate the fragmentation, consider rebuilding the indexes on the file after shrinking.

Voir aussiSee Also

Réduire un fichier Shrink a File
sys.databases (Transact-SQL) sys.databases (Transact-SQL)
sys.database_files (Transact-SQL) sys.database_files (Transact-SQL)
DBCC (Transact-SQL) DBCC (Transact-SQL)
DBCC SHRINKFILE (Transact-SQL) DBCC SHRINKFILE (Transact-SQL)
Groupes de fichiers et fichiers de base de données Database Files and Filegroups