Truncar log y espacio disponible en una base de datos SQL

Hola Todos,

 
Les dejo el siguiente script, es para truncar el los de una base de datos de MS SQL y a su vez la indexa y recupera el espacio disponible disminuyendo de tamaño el MDF de la base de datos.

USE --> Remplace por su base de datos
GO

ALTER DATABASE contoso
SET SINGLE_USER

SELECT file_id, name
FROM sys.database_files
GO
-- truncamos el log a 1 MB.
DBCC SHRINKFILE (2, 1)
-- truncamos el espacio disponible del ldf y mdf
DBCC SHRINKFILE (1, TRUNCATEONLY)

DECLARE @TableName varchar(255) 

DECLARE TableCursor CURSOR FOR 
SELECT table_name FROM information_schema.tables 
WHERE table_type = 'base table' 

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName 
WHILE @@FETCH_STATUS = 0 
BEGIN 
DBCC DBREINDEX(@TableName,' ',90) 
FETCH NEXT FROM TableCursor INTO @TableName 
END

CLOSE TableCursor 


DEALLOCATE TableCursor

DBCC SHRINKDATABASE (N'contoso');

-- Truncamos una vez mas el log de la Base de Datos
DBCC SHRINKFILE(2,1)
BACKUP LOG contoso WITH TRUNCATE_ONLY
DBCC SHRINKFILE(2,1)


ALTER DATABASE contoso
SET MULTI_USER