Bonjour,
Suite à une opération exceptionnelle, la tempDB d'une base à augmenter.
Je voulais savoir s'il était possible de réduire la taille de la TempDB sans risque en faisant un shrink comme sur une base de production.
Cordialement.
Bonjour,
Suite à une opération exceptionnelle, la tempDB d'une base à augmenter.
Je voulais savoir s'il était possible de réduire la taille de la TempDB sans risque en faisant un shrink comme sur une base de production.
Cordialement.
Est-ce le (les) fichier(s) de données de tempdb qui ont augmenté, ou est-ce le journal ?
- S'il s'agit du journal, un dbcc shrinkfile devrait suffire.
- S'il s'agit des fichiers de données c'est plus compliqué, parce qu'il y a toujours plus ou moins d'activité dans la base, et des extents alloués en fin de fichier qui empêchent sa réduction sur disque. (http://support.microsoft.com/kb/307487). Le plus simple est de faire un stop/start du service pendant les heures de non utilisation de l'instance.
Autre question: que renvoient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select name, size/128,max_size from tempdb.sys.database_files GO -- dbcc sqlperf(logspace) GO
C'est le fichier de données de la TempDB qui a augmenté.
Résultat requêtes :
name | (No column name) | max_size
tempdata | 58530 | -1
templog | 459 | -1
Database Name | Log Size (MB) | Log Space Used (%) | Status
tempdb | 459,1172 | 67,67967 | 0
Cordialement.
OK. Tenter un shrinkfile avec de l'activité me paraît compliqué et risqué : le shrink en déplaçant des pages verrouille des plages d'offsets dans le fichier MDF, ralentit toute l'activité IO type checkpoint, lazy writer, etc... Quant à un dbcc shrinkfile truncateonly, il y a toujours un extent en fin de fichier qui bloque la réduction. Il faut trouver une plage de non utilisation pour redémarrer.
Autre chose, la taille initiale de tempdb:
merci,
Code : Sélectionner tout - Visualiser dans une fenêtre à part select size/128 from master.sys.sysaltfiles where fileid=1 and dbid=2
résultat de la requête :
(No column name)
58530
Cordialement.
Ah donc quand tu affiches les propriétés de la base tempdb, -> Fichiers (ou Files) la taille initiale de tempdev est de 58Gb ?
Bonjour,
Est ce qu'exécuter la requête suivante suffit :
alors que la base est en production ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ALTER DATABASE TEMPDB MODIFY FILE (NAME='tempdev', SIZE=20GB) GO
Cordialement.
Comment l'a précisé David cela dépend de la taille initiale de votre fichier.
Vous pouvez toujours tenté de le faire cependant.
Si la taille que vous demandez est inférieure à la taille initiale vous aurez un message d'erreur. Regardez un peu plus haut la procédure donnée par David dans ce cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT size/128 FROM tempdb.sys.database_files WHERE file_id <> 2
Partager