Thursday, January 6, 2011

Transaction log full Error - Solution...

DECLARE @DBName varchar(255)
DECLARE @DBLogicalFileName varchar(255)
DECLARE @DATABASES_Fetch int
DECLARE DATABASES_CURSOR CURSOR FOR
select DATABASE_NAME = db_name(MaTableMasterFiles.database_id), MaTableMasterFiles.name
from sys.master_files MaTableMasterFiles
where
-- ONLINE
MaTableMasterFiles.state = 0
-- Only look at databases to which we have access
and has_dbaccess(db_name(MaTableMasterFiles.database_id)) = 1
-- Not master, tempdb or model
and db_name(MaTableMasterFiles.database_id) not in ('Master','tempdb','model','msdb')
AND type_desc LIKE 'log'
group by MaTableMasterFiles.database_id, MaTableMasterFiles.name
order by 1
OPEN DATABASES_CURSOR
FETCH NEXT FROM DATABASES_CURSOR INTO @DBName, @DBLogicalFileName
WHILE @@FETCH_STATUS = 0
BEGIN
Exec ('BACKUP LOG [' + @DBName + '] WITH TRUNCATE_ONLY')
Exec ('Use [' + @DBName + '] DBCC SHRINKFILE ("' + @DBLogicalFileName + '")')
FETCH NEXT FROM DATABASES_CURSOR INTO @DBName, @DBLogicalFileName
END
CLOSE DATABASES_CURSOR
DEALLOCATE DATABASES_CURSOR

No comments:

Post a Comment