Als een SQL database op recovery model : Full staat, wordt er door SQL Server een transactie logfile (<databasenaam>_log.ldf) bijgehouden.

Vroeg of laat krijg je te maken met de melding van SQL Server : ‘The Transaction log for database <databasename> is Full’.

Deze melding wil zeggen dat de Transactie logfile geen ruimte meer heeft om te groeien.

Mogelijke oorzaken van de melding ‘SQL Server Logfile vol’

  • Schijfruimte op de partitie van de logfile is vol.
  • Maximale grootte van de logfile is bereikt.

Oplossingen om de logfile weer ruimte te geven

Maak een backup

Voordat je ook maar iets gaat doen met een SQL Server (Productie) database, zorg er voor dat je een volledige backup maakt. In combinatie met Dynamics-AX, ook eerst alle gebruikers uit het systeem en de AOS’en uitschakelen.

Extra schijfruimte toekennen

Als de schijfruimte op de partitie van de database logfile vol is, dan kun je er natuurlijk voor kiezen om extra schijfruimte toe te kennen.
Vooral in virtuele omgevingen is dit meestal de meest eenvoudige oplossing.

Logfile comprimeren

Je kunt de file vanuit de SQL manager shrinken (verkleinen). Hierbij wordt ongebruikte ruimte in de logfile (.ldf file) weer vrijgegeven. Dit levert vaak maar een paar procent winst op.

Om de logfile echt te kunnen comprimeren moet deze, tijdelijk, losgekoppeld worden van de database.

Dit doe je door het recovery model van de database te wijzigen van full naar simple.

Daarna kan de logfile gecomprimeerd worden.

Script comprimeren logfile

Gebruik het onderstaande script om de logfile te comprimeren in 3 stappen:

  • Wijzig eerst het recovery model van de database naar simpel
  • Comprimeer de logfile naar 1 Mb.
  • Wijzig het recovery model weer terug naar Full

Vervang hierbij de database naam, AX2012_TST, door de naam van de te comprimeren database.
Vervang de naam van de logfile door de fysieke naam van de logfile in de dataset van de database.

USE

AX2012_TST;

GO

— Truncate the log by changing the database recovery model to SIMPLE.

ALTER

DATABASE AX2012_TST

SET

RECOVERYSIMPLE;

GO

 

— Shrink the truncated log file to 1 MB.

DBCC

SHRINKFILE(AX2012_TST_Log, 1);

GO

 

— Reset the database recovery model.

ALTER

DATABASE AX2012_TST

SET

RECOVERYFULL;

GO