You are on page 1of 1

ALTER procedure [dbo].

[Shrink_Log_All] as
begin

DECLARE @DatabaseName nvarchar(256)


DECLARE @FileName nvarchar(256)

declare clg1 cursor for

SELECT d.name as [DatabaseName],f.name as [FileName]


FROM sys.master_files as f
inner join sys.databases as d on f.database_id = d.database_id
where d.name NOT IN ('master', 'tempdb', 'model',
'msdb','ReportServer','ReportServerTempDB')
AND f.type_desc = 'LOG'
AND d.state = 0
AND d.is_read_only = 0
order by [DatabaseName]

open clg1

FETCH NEXT FROM clg1 INTO @DatabaseName,@FileName


WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(
'
ALTER DATABASE [' + @DatabaseName + '] SET RECOVERY simple;
use [' + @DatabaseName + ']
DBCC SHRINKFILE(''' + @FileName + ''', 1)
ALTER DATABASE [' + @DatabaseName + '] SET RECOVERY full;
'
)
print('done '+ @DatabaseName)
FETCH NEXT FROM clg1 INTO @DatabaseName,@FileName
END

CLOSE clg1
DEALLOCATE clg1

end

You might also like