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

Leave a Comment