Pourquoi mon fichier journal de base de données prend-il trop d'espace? Il occupe presque 30 Go
de mon disque dur. Même après avoir supprimé 1 000 000
enregistrements, cela ne libère aucun espace.
Alors,
1.
Pourquoi le fichier journal prend-il autant d'espace ( 30 Go
)?
2.
comment puis-je libérer de l'espace?
4 Réponses :
1.Pourquoi le fichier journal prend-il autant d'espace (30 Go)?
2. comment puis-je libérer de l'espace?
SI la récupération est autre que SIMPLE:
DBCC SHRINKFILE (2,256)
SI la récupération est SIMPLE:
DBCC SHRINKFILE (2,256)
Si le journal de la base de données ne s'est toujours pas réduit à une taille cible, alors la raison exacte à vérifier, en utilisant un extrait de code de @sepupic
Certains membres donnent et conseillent toujours de supprimer physiquement les fichiers LDF.
Je suggère fortement de ne pas faire cela. Remarquable post d'Aaron Bertrand: < / p>
Certaines choses que vous ne voulez pas faire:
Détachez la base de données, supprimez le fichier journal et reconnectez-le. Je ne peux pas souligner à quel point cela peut être dangereux. Votre base de données peut ne pas revenir up, cela peut apparaître comme suspect, vous devrez peut-être revenir à une sauvegarde (si vous en avez un), etc. etc.
Vous avez besoin d'une tâche de maintenance pour sauvegardez le journal des transactions , et faites-le
Une sauvegarde complète une fois par jour ne suffit pas.
Vous pouvez également modifier le Modèle de récupération de la base de données de FULL
à SIMPLE
. Mais si vous faites cela, vous perdrez la possibilité d'effectuer des restaurations ponctuelles.
Je veux juste mentionner que le journal peut atteindre une grande taille, même dans une récupération SIMPLE, en exécutant une opération DML volumineuse. À titre d'exemple - TEMPDB, il ne peut pas avoir d'autre récupération que simple mais le manque d'espace dans son fichier journal peut être une raison d'un temps d'arrêt du serveur.
Pourquoi mon fichier journal de base de données prend-il trop d'espace?
Il peut y avoir plus de causes, pas seulement les 2 mentionnées dans une autre réponse.
Vous pouvez trouver la raison exacte en utilisant cette requête:
select log_reuse_wait_desc from sys.databases where name = 'myDB';Voici un lien vers l'article BOL qui décrit toutes les causes possibles sous
log_reuse_wait
: sys.databases (Transact-SQL)comment puis-je libérer de l'espace?
Tout d'abord, vous devez déterminer la cause à l'aide de la requête ci-dessus, puis vous devez la corriger, par exemple, si la
réplication
est interrompue, vous devez la supprimer ou la réparer.
1. Pourquoi le fichier journal prend-il autant d'espace (30 Go)?
C'était parce que Autogrowth / Maxsize
était défini sur 200 000 Mo
2. comment puis-je libérer de l'espace?
Comme décrit Ici j'ai utilisé ce qui suit et le fichier est maintenant inférieur à 200mb
ALTER DATABASE myDatabaseName SET RECOVERY SIMPLE GO DBCC SHRINKFILE (myDatabaseName_log, 1) GO ALTER DATABASE myDatabaseName_log SET RECOVERY FULL
J'ai également défini Autogrowh / Maxsize
dans le propriétés de la base de données à 1000
comme Limited
(voir l'image ci-dessous).
Le lien en décrit plus, je vous recommande donc de le consulter pour une description détaillée et d'autres options.
Merci @hadi pour le lien.
votre base de données ne sera plus opérationnelle une fois que le fichier journal des transactions atteindra 1000 Mo. Et comme vous l'avez défini sur la récupération FULL , cela se produira très bientôt;)
Pourquoi? et pourquoi SQL Server fournit cette option si oui?
parce que vous avez activé la récupération complète mais que vous ne comprenez peut-être pas quand elle doit être utilisée et quels effets secondaires elle peut entraîner. En bref: si vous avez activé la récupération complète et que vous n'effectuez pas de sauvegarde du journal des transactions, votre journal continuera de croître et quand il atteindra la limite que vous avez définie récemment, votre base de données ne pourra pas exécuter d'opération DML, comme INSERT / DELETE, etc. . Je pense que c'est un bon article à expliquer plus en détail: mssqltips.com/sqlservertip/5343/...
Quel est le mode de récupération de votre base de données et à quelle fréquence effectuez-vous des sauvegardes de journaux s'il est en mode complet?
mssqltips.com/sqlservertutorial/3311/… a>
@Hadi tnx pour lien z