Beren.it

All that you can leave behind

Troncare i log in SQLServer

Capita spesso che usando un DB SQLServer, sul server dove sono presenti il file MDF e quello LDF (il transaction log) lo spazio su disco diventi insufficiente per le dimensioni notevoli raggiunte dal transaction log. Ma mentre per le versioni di SQL 2000 e 2005 bastava il comando:

[T-SQL]

DBCC SHRINKFILE(TestDBLog, 1)
BACKUP LOG TestDB WITH TRUNCATE_ONLY
DBCC SHRINKFILE(TestDBLog, 1)
GO

per la versione 2008 tale comando ritorna l'errore: "‘TRUNCATE_ONLY’ is not a recognized BACKUP option.". In effetti un opportunità per troncare il file di log è data dal comando seguente:

[T-SQL]

USE [master]
GO
ALTER DATABASE DBNAMELOG SET RECOVERY SIMPLE WITH NO_WAIT
GO
USE DBNAMELOG
DBCC SHRINKFILE(DBNAMELOG, 1)
GO
USE [master]
ALTER DATABASE DBNAMELOG SET RECOVERY FULL WITH NO_WAIT
GO

 

Per maggiori info potete anche consultare questo post che fornisce ulteriori spiegazioni in merito. Va però rimarcato che questa procedura interrompe la catena dei log con conseguente impossibilità di restore in time. Dunque prima di procedere è vivamente consigliato di effettuare un full backup del DB.