To Shrink all Log Files

database
#database
USE master;
GO

DECLARE @Log_name VARCHAR(1000);
DECLARE @Db_name VARCHAR(1000);
DECLARE @Recovery_model_desc VARCHAR(1000);
DECLARE @SQL NVARCHAR(2000);
DECLARE @ParmDefinition NVARCHAR(1000);
DECLARE @SizeAfter INT;

DECLARE db_cursor CURSOR FOR
SELECT
 F.NAME AS [LOG_NAME],
 DB.NAME AS [DB_NAME],
 DB.RECOVERY_MODEL_DESC AS [RECOVERY_MODEL_DESC]
FROM
 MASTER.SYS.MASTER_FILES F
 INNER JOIN MASTER.SYS.DATABASES DB ON DB.DATABASE_ID = F.DATABASE_ID
WHERE
 F.FILE_ID = 2
 AND DB.NAME <> 'master'
 AND DB.NAME <> 'model'
 AND DB.NAME <> 'msdb'
 AND DB.NAME <> 'tempdb'
 AND DB.NAME <> 'distribution'
 AND DB.STATE_DESC = 'ONLINE';

OPEN db_cursor;

FETCH NEXT FROM db_cursor INTO @Log_name, @Db_name, @Recovery_model_desc;

WHILE @@FETCH_STATUS = 0
BEGIN
 SET @SQL = N'
 SELECT F.SIZE
 FROM MASTER.SYS.MASTER_FILES F
 INNER JOIN MASTER.SYS.DATABASES DB ON DB.DATABASE_ID = F.DATABASE_ID
 WHERE F.NAME = ''' + @Log_name + ''' AND DB.NAME = ''' + @Db_name + '''
 ';

 SET @SQL = @SQL + N'
 USE [' + @Db_name + '];
 CHECKPOINT;
 DBCC SHRINKFILE (' + @Log_name + ', 10);
 ';

 SET @sql = @sql + N'
 SELECT F.SIZE
 FROM MASTER.SYS.MASTER_FILES F
 INNER JOIN MASTER.SYS.DATABASES DB ON DB.DATABASE_ID = F.DATABASE_ID
 WHERE F.NAME = ''' + @Log_name + ''' AND DB.NAME = ''' + @Db_name + '''
 ';

 SET @ParmDefinition = N'@Size INT OUTPUT';

 EXECUTE sp_executesql @SQL, @ParmDefinition, @Size = @SizeAfter OUTPUT;

 FETCH NEXT FROM db_cursor INTO @Log_name, @Db_name, @Recovery_model_desc;
END;

CLOSE db_cursor;
DEALLOCATE db_cursor;