SQL Server logbestand van een database leegmaken

Wellicht dat u dit probleem herkent: u heeft een testdatabase waarvan door het testen de logfile behoorlijk groot is geworden. Op een cursus heeft u wel eens gehoord van Transact-SQL functie “DBCC SHRINKFILE”. Via Microsoft Developer Network leest u vervolgens hoe DBCC SHRINKFILE moet worden gebruikt. Vervolgens past u dit op uw eigen omgeving toe en u merkt dat het logbestand na het gebruik van de functie DBCC SHRINKFILE (‘logical name’,1) nog steeds erg groot is. Wat nu?

Een alternatieve manier om het logbestand kleiner te maken
Er is een alternatieve manier om een logbestand kleiner te maken. Het proces is iets bewerkelijker en geeft het gewenste resultaat.

Methode
Deze procedure mag NOOIT op een productieomgeving worden uitgevoerd!
De werkwijze om de logfile op een alternatieve manier te verkleinen, is als volgt:

– Detach de database van SQL Server
– Verplaats de logfile van de database naar een tijdelijke andere locatie
– Attach de database, zonder logfile (bij melding ‘not found’ regel verwijderen)

Verplaatsen logbestand
Mocht de locatie van de logfile vervolgens anders moeten zijn, dan dienen
aanvullend de volgende stappen te worden toegevoegd:

– Detach de database opnieuw
– Verplaats de logfile naar de nieuw locatie
– Voer onderstaande query uit

CREATE DATABASE [Naam van de database]
ON (FILENAME = '[schijf/locatie]\[Naam mdf bestand].mdf'),
(FILENAME = '[schijf/locatie]\[Naam log bestand].ldf')
FOR ATTACH;

Het verplaatsen van een bestand binnen een database wordt door Microsoft
op deze locatie behandeld.