By 5 Aprile 2012 0 Comments

Liberare spazio su Microsoft SQL Server (log Transazioni)

Quando si crea un nuovo database, il modello di recovery che viene impostato di default è “FULL”: con questa modalità, per quel database verrà usato un log delle transazioni. Il log delle transazioni è un archivio che contiene tutte le operazioni fatte sul database.
per questo motivo avremo sempre un file NomeDatabase.MDF e un altro file NomeDatabase_log.LDF.

Quando le transazioni vengono salvate, nell’ambito di un normale programma di manutenzione del database, vengono anche cancellate dal file di log che quindi poi può essere “ristretto” per recuperare lo spazio su disco. Il problema nasce però dal fatto che il programma di backup / manutenzione non è attivo di default e di rado ci si ricorda di farlo manualmente. In questi casi, il file di log delle transazioni continua ad aumentare, e prima o poi finisce per riempire anche i dischi più capienti oppure finisce per arrivare al limite impostato

Per risolvere ci sono due scelte:

– attivare il backup e la manutenzione del file di log;
– impostare il metodo di recovery (nelle proprietà del database) a “SIMPLE”.
In questo modo le transazioni verranno cancellate non appena applicate al database

Comandi per risolvere manualmente la situazione

BACKUP LOG NomeDatabase WITH TRUNCATE_ONLY
Questo lancia un backup del log delle transazioni ma senza salvare i dati, cancellando le transazioni esistenti

DBCC SHRINKDATABASE ( ‘NomeDatabase’ )
Questo comprime tutti i file del db recuperando lo spazio libero. Se volete lavorare solo sul file di log anzichè su tutti i file del db, usate il comando

DBCC SHRINKFILE ( ‘NomeFileLogico’ )

Fate attenzione a:

  • usare il nome logico del file di log: lo trovate nelle proprietà del db
  • inserire tra apici (‘) i nomi del db o del file
Posted in: Sql Server

About the Author:

shared on wplocker.com