Execute on a server to return information for each database in regards to backups and database integrity checks.
I normally combine this with my email report procedure as a schedule report on each server.
Execute on a server to return information for each database in regards to backups and database integrity checks.
I normally combine this with my email report procedure as a schedule report on each server.
DECLARE
@vcDBNameVARCHAR(200)
,@vcExecVARCHAR(MAX)
CREATE TABLE ##dbinfo
(
DBNameVARCHAR(100)
,ParentObjectVARCHAR(100)
,ObjectVARCHAR(100)
,FieldVARCHAR(100)
,ValueVARCHAR(100)
)
SET @vcExec = ''
SELECT @vcExec = @vcExec+
'
INSERT INTO ##dbinfo
(
ParentObject
,Object
,Field
,Value
)
EXEC(''DBCC DBINFO (['+name+']) WITH TABLERESULTS'')
DELETE FROM ##dbinfo
WHEREField <> ''dbi_dbccLastKnownGood''
UPDATE ##dbinfo
SETDBName = '''+name+'''
WHEREDBName IS NULL
'
FROM sys.databases
WHERE [state] = 0
EXEC (@vcExec)
SELECT
a.database_name
,a.FullBackupDate
,b.LogBackupDate
,sd.recovery_model_desc
,CASE
WHEN value = '1900-01-01 00:00:00.000'THEN CAST('NeverRan'AS VARCHAR)
WHEN DATEDIFF(d, value, GETDATE()) > 7THEN CAST('NotCurrent'AS VARCHAR)
ELSE CAST('Current' AS VARCHAR)
END AS CheckDBStatus
FROM
(
SELECT
database_name
,MAX(backup_finish_date) FullBackupDate
FROM msdb.dbo.backupset
WHERE TYPE = 'D'
GROUP BY database_name
) a
LEFT OUTER JOIN
(
SELECT
database_name
,MAX(backup_finish_date) LogBackupDate
FROM msdb.dbo.backupset
WHERE TYPE = 'L'
GROUP BY database_name
) b
ON a.database_name = b.database_name
INNER JOIN sys.databasessd ON sd.name= a.database_name
INNER JOIN ##dbinfodb ON db.DBName= a.database_name
ORDER BY a.database_name
DROP TABLE ##dbinfo