Compacter le fichier LOG de la base de données
Les fichiers de log sont en fait ce que l'on appelle en français les "fichiers de journalisation".
Ils contiennent toutes les transactions effectuées dans la base de données (INSERT, UPDATE, DELETE...) enregistrées en séquence.
Problématique de croissance
Par exemple si, partant d'une base vide, on ajoute et supprime un millier de lignes dans une table, et cela plusieurs centaines de fois, la base sera quasi vide et le journal des transactions important. Il se peut donc que le journal des transactions vienne donc à occuper un espace disque important et si l'administrateur n'y prend pas garde, saturer les disques...
Solutions préventives
Les remèdes sont les suivants :
- Surveillez l'espace disque via l'OS (alertes administratives)
- Videz les journaux de transactions
- Limitez la croissance du fichier de transaction (dangereux)
Contraintes de sécurité
Il se peut que vous ayez du mal à vider votre journal de transaction. En effet les différentes sauvegardes : base complète, base différentielle ou journal des transactions permettent de récupérer une base corrompue. Tant que ces fichiers ne sont pas tronqués, la récupération est en principe toujours possible. C'est pourquoi tant que la sauvegarde base + journal n'a pas eu lieu, il n'est pas possible de tronquer les fichiers.
Les fichiers logs sont des fichiers en croissance forte qui peuvent parfaitement dépasser de beaucoup la taille des données. Ces fichiers peuvent provoquer la saturation du disque dur du serveur, dans ce cas vous serez dans l'obligation soit de réduire la taille de ces fichiers soit les déplacer sur un autre disque dur local.
Compacter vos logs
Étape 1 : Sélection de la base de données
- Tapez le nom de votre base de données
USE [Nom de la base de données]
Étape 2 : Sauvegarde de la base
- Effectuez une sauvegarde de votre base de données
BACKUP DATABASE [Nom de la base de données] TO DISK='Chemin où sera stocké la sauvegarde. Par exemple, C:\MonBackUp.bak' WITH INIT, STATS
Étape 3 : Changement du mode de récupération
- Exécutez ce script avec le nom de votre base qui passe change temporairement le mode de récupération de la base de donnée
ALTER DATABASE [Nom de la base de données] SET RECOVERY SIMPLE
Étape 4 : Identification du fichier log
- Exécutez cette procédure stockée système "sp_helpfile" qui liste les fichiers et leurs noms pour la base de données courante et vous renvoie le nom logique dont on a besoin plus loin
EXEC sp_helpfile
Étape 5 : Compactage du fichier log
- Ce script qui va compacter le fichier log
DBCC SHRINKFILE ('NomLogique_Log','TRUNCATEONLY')
Étape 6 : Retour au mode de récupération complet
- Repassez la base en mode RECOVERY FULL
ALTER DATABASE [Nom de la base de données] SET RECOVERY FULL
Script complet à exécuter étape par étape
/* Étape 1 : Sélection de la base de données */
USE [Nom de la base de données]
/* Étape 2 : Sauvegarde de la base */
BACKUP DATABASE [Nom de la base de données] TO DISK='Chemin où sera stocké la sauvegarde. Par exemple, C:\MonBackUp.bak' WITH INIT, STATS
/* Étape 3 : Changement du mode de récupération */
ALTER DATABASE [Nom de la base de données] SET RECOVERY SIMPLE
/* Étape 4 : Identification du fichier log */
EXEC sp_helpfile
/* Étape 5 : Compactage du fichier log */
DBCC SHRINKFILE ('NomLogique_Log','TRUNCATEONLY')
/* Étape 6 : Retour au mode de récupération complet */
ALTER DATABASE [Nom de la base de données] SET RECOVERY FULL
Mettez en place une surveillance de l'espace disque pour éviter la saturation due aux fichiers de log.
Toujours effectuer une sauvegarde complète avant de compacter les fichiers de log pour préserver la possibilité de récupération.
Le mode SIMPLE permet de tronquer automatiquement les logs, tandis que le mode FULL nécessite une sauvegarde explicite des logs.
Compacter le fichier LOG de la base de données - Guide de maintenance