7
votes

Fichier LDF du serveur SQL prenant trop de place

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?


3 commentaires

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/…


@Hadi tnx pour lien z


4 Réponses :



1
votes

Vous avez besoin d'une tâche de maintenance pour sauvegardez le journal des transactions , et faites-le : comme toutes les 10 minutes ou oui.

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.


1 commentaires

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.



4
votes

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.


0 commentaires

4
votes

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).

 <code> Database Propertis => Fichiers </code> dans SSMS

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.


3 commentaires

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/...