Il ne me reste que 2 Go, je dois donc supprimer cette table d'historique. Cette table est maintenant vide mais l'espace disque de la base de données n'est pas libéré. Et le fichier de base de données est de 320 Go.
sql-server
sql-server-2012
truncate
Lucas Rodrigues Sena
la source
la source
Réponses:
Si vous référencez la consommation réelle de fichiers de base de données sur le volume, SQL Server ne gère pas cela automatiquement . Ce n'est pas parce que vous avez supprimé des données de la base de données que les fichiers de la base de données rétréciront pour n'adapter qu'aux données existantes.
Ce que vous recherchez, si vous devez récupérer de l'espace sur le volume, serait de réduire le fichier particulier avec
DBCC SHRINKFILE
. Il convient de noter quelques bonnes pratiques, conformément à cette documentation:A noter également:
Il y a sûrement quelques éléments à considérer lors de cette opération, et je vous recommande de jeter un œil au billet de blog de Paul Randal sur ce qui se passe lorsque vous effectuez cette opération.
La première étape serait certainement de vérifier combien d'espace et d'espace libre vous êtes réellement en mesure de remplacer, ainsi que l'espace utilisé sur le (s) fichier (s):
la source
Il s'agit d'un comportement normal lorsque vous tronquez la table et qui implique la suppression de plus de 128 extensions selon la documentation en ligne
Vous devrez attendre et bien sûr, vous devrez réduire manuellement le fichier pour récupérer de l'espace, il convient également de mentionner que le rétrécissement provoque une fragmentation logique et doit être évité, sauf si votre besoin est grave. Vous auriez à un certain équilibre entre le rétrécissement et la fragmentation. Il vaut mieux vous demander si la réduction résoudrait réellement le problème compte tenu du scénario dans lequel les données augmenteront à nouveau de toute façon.
Utilisez la requête ci-dessous pour vérifier la quantité d'espace libre dans la base de données
la source
En plus des réponses de Tom et Shanky, si votre base de données contient des données LOB / BLOB, le DBCC SHRINKFILE peut ne pas fonctionner. Si tel est le cas, vous disposez de deux options, selon que vous pouvez mettre la base de données hors ligne ou non. Si vous pouvez mettre la base de données hors ligne, vous devrez copier les données et les recopier pour supprimer l'espace vide. Vous pouvez accomplir cela par l'un des moyens suivants:
Si vous ne pouvez pas mettre la base de données hors ligne, vous pouvez utiliser la commande DBCC SHRINKFILE avec l' option EMPTYFILE .
Détails pour la copie hors ligne: http://support.microsoft.com/kb/324432/en-us
Informations actuelles sur l'option EMPTYFILE http://msdn.microsoft.com/en-us/library/ms189493(v=sql.105).aspx
la source