Un database SQL Server può diventare, in alcuni casi, terribilmente grande. Questo non tanto a causa dei dati immagazzinati al suo interno, ma a causa del log delle transazioni effettuate.
Questi log sono utili nel caso di un database corrotto del quale non si ha una copia di backup molto recente.
In questo caso la presenza dei Transaction Log diventa fondamentale per recuperare la consistenza del DB e soprattutto i dati.
D’altra parte questi log possono diventare veramente ingombranti se l’auto-cancellazione integrata in SQL Server non funziona per qualche motivo questi file di log possono arrivare ad avere dimensioni consistenti fino anche a bloccare le operazioni sul DB stesso (se si esaurisce lo spazio su disco)
Vediamo la procedura per rimuovere manualmente questi file.
Procedura 1 – SQL Server Management Studio
Per Prima cosa aprire SQL Server Management Studio:
Fatto il login, tasto destro del mouse sul DB di cui dobbiamo svuotare i log delle transazioni, e clicchiamo su Proprietà.
Per prima cosa dobbiamo cambiare il Recovery Mode da Full a Simple:
Non preoccupatevi se sembra che ci impieghi molto tempo, è normale e bisogna solo attendere che la procedura termini senza ulteriori interventi.
Una volta finito, si torna indietro, sempre tasto destro del mouse sul DB e questa volta andiamo su Tasks -> Shrink -> Files
Selezionare la dimensione minima desiderata (in genere 100MB va più che bene) e premere OK.
Anche in questo caso la procedura può durare molto tempo a seconda delle dimensioni del file, aspettate che finisca senza ulteriori interventi.
Una volta terminata la procedura, aprire di nuovo le Proprietà del DB e reimpostare il Recovery da Simple a Full.
Procedura 2 – SQL Query
USE ″YourDBName″;
ALTER DATABASE ″YourDBName″ SET RECOVERY SIMPLE;
DBCC SHRINKFILE (″YourDBName″, ″Desired_size″);
ALTER DATABASE ″YourDBName″ SET RECOVERY FULL;
Enjoy!