Truncate ALL DB Log Files.sql
/*
Santomieri Systems
Josh Santomieri
http://www.santsys.com
Truncate and shrink the log files of all databases on a SQL server instance.
*/
SET NOCOUNT ON
DECLARE @DBName VARCHAR(100)
DECLARE @FileName VARCHAR(255)
USE master
CREATE TABLE #clearlogs
(
dbname VARCHAR(100),
fn VARCHAR(255)
)
INSERT INTO #clearlogs (dbname)
SELECT db.name FROM master.dbo.sysdatabases AS db
DECLARE MyLogs CURSOR FOR
(SELECT dbname FROM #clearlogs)
OPEN MyLogs
FETCH NEXT FROM MyLogs INTO @DBName
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC('UPDATE #clearlogs SET fn = (SELECT f.name FROM ' + @DBName + '.dbo.sysfiles AS f WHERE filename LIKE ''%.ldf%'') WHERE dbname = ''' + @DBName +'''')
FETCH NEXT FROM MyLogs INTO @DBName
END
CLOSE MyLogs
DEALLOCATE MyLogs
DECLARE MyDatabases CURSOR FOR
(SELECT dbname, fn FROM #clearlogs)
OPEN MyDatabases
FETCH NEXT FROM MyDatabases INTO @DBName, @FileName
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC('BACKUP LOG ' + @DBName + ' WITH TRUNCATE_ONLY')
EXEC('USE ' + @DBName + ' DBCC SHRINKFILE(' + @FileName + ', 5)')
FETCH NEXT FROM MyDatabases INTO @DBName, @FileName
END
CLOSE MyDatabases
DEALLOCATE MyDatabases
DROP TABLE #clearlogs
SET NOCOUNT OFF