So, lots of versions of the database on the same dev server - multiple development teams running their own instance of the same schema. This script will delete the contents of all the log files to clear some disc.
USE master
DECLARE db_cursor CURSOR FOR
SELECT d.name FROM sysaltfiles f
INNER JOIN sysdatabases d ON (f.dbid = d.dbid)
WHERE d.name NOT IN('master','model','msdb','tempdb')
AND f.filename LIKE '%.ldf' AND f.name = 'xxx_Log'
DECLARE @dbName VARCHAR(70)
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @shrinkStatement VARCHAR(400)
SELECT @shrinkStatement = 'USE master; ALTER DATABASE ['+CONVERT(VARCHAR(70), @dbName)+'] SET RECOVERY SIMPLE; USE '+CONVERT(VARCHAR(70), @dbName)+'; DBCC SHRINKFILE (xxx_Log, 7); ALTER DATABASE ['+CONVERT(VARCHAR(70), @dbName)+'] SET RECOVERY FULL;';
EXEC (@shrinkStatement)
FETCH NEXT FROM db_cursor INTO @dbName
END
CLOSE db_cursor
DEALLOCATE db_cursor
No comments:
Post a Comment