SQL Server HowTo

Logo

Aide pour opérations administratives, développement et optimisation dans Microsoft SQL Server

View the Project on GitHub rudi-bruchez/sql-server-howto-fr

Pourquoi le disque des journaux de transaction est-il plein ?

Les journaux de transactions des bases SQL Server conservent l’historique transactionnel des écritures dans les bases.

Problèmes possibles :

Si une base est en mode COMPLET et qu’aucune sauvegarde de journaux (BACKUP LOG) n’est planifiée, le journal grandira à l’infini.

Il n’y a que deux options :

  1. planifier des sauvegardes de journaux, sur un serveur de production.
  2. passer la base en mode SIMPLE, sur un serveur hors production.

Tester le mode de récupération

Sinon, la requête suivante suffit

SELECT 
    name as [db], 
    recovery_model_desc as [recovery]
FROM sys.databases
WHERE database_id > 4
ORDER BY name; 

Changer le mode de récupération

La requête suivante change le mode de récupération d’une base de données en SIMPLE :

use [master];
GO

ALTER DATABASE [<nom de la base de données>] SET RECOVERY SIMPLE WITH NO_WAIT

Vérifiez ensuite avec la commande DBCC SQLPERF (LOGSPACE) que le pourcentage de remplissages du journal a baissé.

Récupérer l’espace disque

La taille physique du journal ne diminue pas automatiquement. C’est seulement le remplissage du fichier qui est ajusté.

Pour diminuer la taille du fichier de journal, vous devez effectuer un shrink. Par exemple avec la commande suivante.

USE [<nom de la base de données>]
GO

DBCC SHRINKFILE (N'<nom logique du fichier de journal>' , 200)

Cette commande essaie de diminuer la taille du fichier à 200 Mo. Cela peut ne pas réussir tout de suite, si la portion active du journal est à la fin du fichier. Réessayez plus tard si la taille n’a pas diminué.

Ne planifiez pas les shrinks. Consultez cet autre article et ma vidéo YouTube.

[Besoin de services avec SQL Server ? Contactez-moi]