If a database is using the FULL Recovery Model, it obviously needs to be doing log backups - otherwise the log will eventually fill the disk (your "eventually" may vary). If you don't need log backups, change the database to SIMPLE Recovery Model and sleep easier at night. But, you know how it is - one way or another, databases wind up in this mongrel state. Run this script on your oldest server - you'll probably be surprised.
This script also prints out the T-SQL command to set each database to SIMPLE Recovery Model, so you can just copy and paste.
-- Find databases in FULL Recovery Model with no log backups.
SELECT d.name AS 'DatabaseName'
, MAX(db.recovery_model_desc) AS 'Model'
, MAX(ISNULL(b.backup_finish_date, '1900-01-01')) AS 'LogBackupFinishDate'
, 'ALTER DATABASE ' + QUOTENAME(d.name)
+ ' SET RECOVERY SIMPLE WITH NO_WAIT' AS 'SqlStatement'
FROM sys.sysdatabases d
JOIN sys.databases db
ON d.dbid = db.database_id
LEFT JOIN msdb..backupset b
ON b.database_name = d.name
AND b.type = 'L'
WHERE db.recovery_model_desc = 'FULL'
AND db.state_desc = 'ONLINE'
AND db.database_id > 4
AND db.is_read_only = 0
GROUP BY d.name
HAVING MAX(ISNULL(b.backup_finish_date, '1900-01-01')) < DATEADD(Day, -180, GETDATE())
ORDER BY d.name
0 comments:
Post a Comment