Automated Process to Shrink database log files

-- Automated Process to Shrink database log files of all online databases whose size is Greater than 10000


DECLARE @loopStart INT = 1 ,
    @LoopEnd INT;

DECLARE @t TABLE
    (
      idx INT IDENTITY(1, 1) ,
      DBName VARCHAR(MAX) ,
      FileType VARCHAR(150) ,
      Location VARCHAR(MAX) ,
      LogicalFileName VARCHAR(MAX) ,
      FileSize BIGINT
    );

INSERT  INTO @t
        ( DBName ,
          FileType ,
          Location ,
          LogicalFileName ,
          FileSize
        )
        SELECT  db.name ,
                type_desc ,
                physical_name ,
                mf.name ,
                mf.size
        FROM    sys.master_files mf
                INNER JOIN sys.databases db ON db.database_id = mf.database_id
                                               AND type_desc = 'LOG' AND db.state_desc='ONLINE'
        WHERE   mf.size > 10000
        ORDER BY mf.size DESC;

SET @LoopEnd = ( SELECT MAX(idx)
                 FROM   @t
               );

DECLARE @DbName VARCHAR(MAX) ,
    @LogicalFileName VARCHAR(MAX),
@SQL NVARCHAR(MAX);


WHILE @loopStart <= @LoopEnd
    BEGIN
        SET @DbName = ( SELECT  DBName
                        FROM    @t
                        WHERE   idx = @loopStart
                      );
        SET @LogicalFileName = ( SELECT LogicalFileName
                                 FROM   @t
                                 WHERE  idx = @loopStart
                               );


SET @SQL='

Use '+@DbName+

' ALTER DATABASE '+ @DbName +
' SET RECOVERY SIMPLE;

-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE ('+ @LogicalFileName+', 1);

-- Reset the database recovery model.
ALTER DATABASE '+ @DbName+
' SET RECOVERY FULL;
'



--SELECT @DbName,@LogicalFileName
--SELECT @SQL

EXEC sp_executesql @SQL

        SET @loopStart = @loopStart + 1;
    END;

 

Comments

Popular posts from this blog

Grouping Sets, With Rollup and With Cube example

Adding Page brake aganist group values

To Get All the Names of tables and Databases their data have changed in last 24 Hours And Backup those databases