Krymp stora loggfiler på SQL Server

Har man ingen strategi för att ta backup av loggfilerna för transaktionerna kan dessa växa något enormt. Då kan det bli läge att krympa ner dem och jobba fram en struktur så att de ska hålla sig på en rimlig nivå.

En del tips på nätet går ut på att man ska ta bort transaktions-loggen helt. Då återskapas en ny som startar om från början. Även om detta kan vara ett effektivt sätt, så är det inget som rekommenderas av Microsoft.

Istället bör man se till att göra backup på loggen, då frigörs det utrymme som inte behövs. Här följer några kommandon som fungerade bra för mig. Obs var försiktigt när du jobbar med filerna och läs på ordentligt innan precis vad kommandona gör. Jag använde SQL 2005, med detta fungerar säkert på SQL 2000 också.

1. Först skapade jag en Checkpoint

Use MyDatabaseName
go
Checkpoint

2. Sen gjorde jag en "backup" av loggfilen med alternativet "TRUNCATE_ONLY". Det innebär att ingen backupfil skapas, den frigör bara det utrymme på redan avklarade transaktioner som är onödiga att spara. Med kommandot "SHRINKFILE" förminskas loggfilen, i detta fall till 30MB

BACKUP LOG MyDatabaseName WITH TRUNCATE_ONLY DBCC SHRINKFILE('DatabasNamn_Log', 30)

The Code Project visar hur man kan göra detta genom programmering. Kolla även Webbproffs där jag gjort lite fler anteckningar.