May 17, 2026, 11:40 PM
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
;WITH LAST_FULL_BACKUP_LIST AS
|
||||
(
|
||||
SELECT
|
||||
SYSDBLIST.name AS Name,
|
||||
MAX(BUSETS.backup_finish_date) AS Last_Backup_Finish_DateTime
|
||||
FROM
|
||||
MASTER.sys.databases AS SYSDBLIST
|
||||
LEFT OUTER JOIN
|
||||
msdb.dbo.backupset AS BUSETS
|
||||
ON
|
||||
SYSDBLIST.name = BUSETS.database_name
|
||||
WHERE
|
||||
SYSDBLIST.name<>'tempdb'
|
||||
AND
|
||||
BUSETS.[type] ='D' OR BUSETS.[type] IS NULL
|
||||
GROUP BY
|
||||
SYSDBLIST.name
|
||||
)
|
||||
,
|
||||
LAST_DIFFERENTIAL_BACKUP_LIST
|
||||
AS
|
||||
(
|
||||
SELECT
|
||||
SYSDBLIST.name AS Name,
|
||||
MAX(BUSETS.backup_finish_date) AS Last_Backup_Finish_DateTime
|
||||
FROM
|
||||
MASTER.sys.databases AS SYSDBLIST
|
||||
LEFT OUTER JOIN
|
||||
msdb.dbo.backupset AS BUSETS
|
||||
ON
|
||||
SYSDBLIST.name = BUSETS.database_name
|
||||
WHERE
|
||||
SYSDBLIST.name<>'TempDB'
|
||||
AND
|
||||
BUSETS.[type] ='I'
|
||||
GROUP BY
|
||||
SYSDBLIST.name
|
||||
)
|
||||
|
||||
,
|
||||
|
||||
LOG_BACKUP_LIST
|
||||
AS
|
||||
(
|
||||
SELECT
|
||||
SYSDBLIST.name AS Name,
|
||||
BUSETS.backup_finish_date AS Backup_Finish_DateTime,
|
||||
ROUND(((BUSETS.backup_size/1024)/1024),2) AS Backup_Size_MB,
|
||||
ROW_NUMBER() OVER(Partition by SYSDBLIST.name ORDER BY BUSETS.backup_finish_date DESC) AS RevOrderBuDate
|
||||
FROM
|
||||
MASTER.sys.databases AS SYSDBLIST
|
||||
LEFT OUTER JOIN
|
||||
msdb.dbo.backupset AS BUSETS
|
||||
ON
|
||||
SYSDBLIST.name = BUSETS.database_name
|
||||
WHERE
|
||||
SYSDBLIST.name<>'TempDB'
|
||||
AND
|
||||
BUSETS.[type] ='L'
|
||||
)
|
||||
,
|
||||
LAST_LOG_BACKUP_LIST
|
||||
AS
|
||||
(SELECT
|
||||
Name,
|
||||
Backup_Finish_DateTime AS Last_Backup_Finish_DateTime,
|
||||
Backup_Size_MB AS Log_Backup_Size_MB
|
||||
FROM
|
||||
LOG_BACKUP_LIST
|
||||
WHERE
|
||||
RevOrderBuDate=1
|
||||
)
|
||||
SELECT
|
||||
case
|
||||
when DATEDIFF(DAY,BUSETS.backup_finish_date,GETDATE()) <=1 then 'OK'
|
||||
when DATEDIFF(DAY,BUSETS.backup_finish_date,GETDATE()) is null then 'ERROR'
|
||||
when DATEDIFF(DAY,BUSETS.backup_finish_date,GETDATE()) > 3 then '!!'
|
||||
when DATEDIFF(DAY,BUSETS.backup_finish_date,GETDATE()) > 1 then '-->'
|
||||
end as Status,
|
||||
SERVERPROPERTY('Servername') AS ServerName,
|
||||
SYSDBLIST.name AS Database_Name,
|
||||
SYSDBLIST.Recovery_model_desc,
|
||||
CASE WHEN BUSETS.backup_set_id IS NULL THEN 'NO Backup' ELSE 'Backup Complete' END AS Backup_Completed,
|
||||
BUSETS.backup_start_date AS Backup_Start_DateTime,
|
||||
BUSETS.backup_finish_date AS Backup_Finish_DateTime,
|
||||
DATEDIFF(MINUTE, BUSETS.backup_start_date, BUSETS.backup_finish_date) AS Duration_Min,
|
||||
(DATEDIFF(DAY,BUSETS.backup_finish_date,GETDATE())) AS Days_Since_Last_Backup,
|
||||
|
||||
LASTDIFFBACKUP.Last_Backup_Finish_DateTime AS Last_Differential_Finish_DateTime,
|
||||
(DATEDIFF(DAY,LASTDIFFBACKUP.Last_Backup_Finish_DateTime ,GETDATE())) AS Days_Since_Last_Differential_Backup,
|
||||
LASTLOGBACKUP.Last_Backup_Finish_DateTime AS Last_Log_Finish_DateTime,
|
||||
(DATEDIFF(DAY,LASTLOGBACKUP.Last_Backup_Finish_DateTime,GETDATE()))AS Days_Since_Last_Log_Backup,
|
||||
LASTLOGBACKUP.Log_Backup_Size_MB AS LOG_Backup_Size_MB,
|
||||
CASE
|
||||
WHEN BUSETS.[type] = 'D' THEN 'Full Backup'
|
||||
WHEN BUSETS.[type] = 'I' THEN 'Differential Database'
|
||||
WHEN BUSETS.[type] = 'L' THEN 'Log'
|
||||
WHEN BUSETS.[type] = 'F' THEN 'File/Filegroup'
|
||||
WHEN BUSETS.[type] = 'G' THEN 'Differential File'
|
||||
WHEN BUSETS.[type] = 'P' THEN 'Partial'
|
||||
WHEN BUSETS.[type] = 'Q'THEN 'Differential partial'
|
||||
END AS Backup_Type,
|
||||
ROUND(((BUSETS.backup_size/1024)/1024),2) AS Backup_Size_MB
|
||||
FROM
|
||||
MASTER.sys.databases AS SYSDBLIST
|
||||
LEFT OUTER JOIN
|
||||
msdb.dbo.backupset AS BUSETS
|
||||
ON
|
||||
SYSDBLIST.name = BUSETS.database_name
|
||||
LEFT OUTER JOIN
|
||||
msdb.dbo.backupmediafamily AS BUMEDFAM
|
||||
ON
|
||||
BUSETS.media_set_id = BUMEDFAM.media_set_id
|
||||
|
||||
INNER JOIN
|
||||
LAST_FULL_BACKUP_LIST AS LASTBACKUP
|
||||
ON
|
||||
SYSDBLIST.Name=LASTBACKUP.Name
|
||||
AND
|
||||
ISNULL(BUSETS.backup_finish_date,'01/01/1900') = ISNULL(LASTBACKUP. Last_Backup_Finish_DateTime,'01/01/1900')
|
||||
|
||||
LEFT OUTER JOIN
|
||||
LAST_DIFFERENTIAL_BACKUP_LIST AS LASTDIFFBACKUP
|
||||
ON
|
||||
SYSDBLIST.Name=LASTDIFFBACKUP.Name
|
||||
|
||||
LEFT OUTER JOIN
|
||||
LAST_LOG_BACKUP_LIST AS LASTLOGBACKUP
|
||||
ON
|
||||
SYSDBLIST.Name=LASTLOGBACKUP.Name
|
||||
WHERE
|
||||
SYSDBLIST.name<>'TempDB'
|
||||
@@ -0,0 +1,49 @@
|
||||
SET NOCOUNT ON
|
||||
GO
|
||||
SET quoted_identifier OFF
|
||||
DECLARE @dbname AS VARCHAR(80)
|
||||
DECLARE @msgdb AS VARCHAR(100)
|
||||
DECLARE @dbbkpname AS VARCHAR(80)
|
||||
DECLARE @dypart1 AS VARCHAR(2)
|
||||
DECLARE @dypart2 AS VARCHAR(3)
|
||||
DECLARE @dypart3 AS VARCHAR(4)
|
||||
DECLARE @currentdate AS VARCHAR(10)
|
||||
DECLARE @server_name AS VARCHAR(30)
|
||||
SELECT @server_name = @@servername
|
||||
SELECT @dypart1 = DATEPART(dd,GETDATE())
|
||||
SELECT @dypart2 = DATENAME(mm,GETDATE())
|
||||
SELECT @dypart3 = DATEPART(yy,GETDATE())
|
||||
SELECT @currentdate= @dypart1 + @dypart2 + @dypart3
|
||||
PRINT "#####################################################################"
|
||||
PRINT "# SERVERNAME : "+ @server_name + " DATE : "+ @currentdate +"#"
|
||||
PRINT "#####################################################################"
|
||||
PRINT "DatabaseName Full Diff TranLog"
|
||||
PRINT "##########################################################################################################################################"
|
||||
SELECT SUBSTRING(s.name,1,50) AS 'DATABASE Name',
|
||||
b.backup_start_date AS 'Full DB Backup Status',
|
||||
c.backup_start_date AS 'Differential DB Backup Status',
|
||||
d.backup_start_date AS 'Transaction Log Backup Status'
|
||||
FROM MASTER..sysdatabases s
|
||||
LEFT OUTER JOIN msdb..backupset b
|
||||
ON s.name = b.database_name
|
||||
AND b.backup_start_date =
|
||||
(SELECT MAX(backup_start_date)AS 'Full DB Backup Status'
|
||||
FROM msdb..backupset
|
||||
WHERE database_name = b.database_name
|
||||
AND TYPE = 'D') -- full database backups only, not log backups
|
||||
LEFT OUTER JOIN msdb..backupset c
|
||||
ON s.name = c.database_name
|
||||
AND c.backup_start_date =
|
||||
(SELECT MAX(backup_start_date)'Differential DB Backup Status'
|
||||
FROM msdb..backupset
|
||||
WHERE database_name = c.database_name
|
||||
AND TYPE = 'I')
|
||||
LEFT OUTER JOIN msdb..backupset d
|
||||
ON s.name = d.database_name
|
||||
AND d.backup_start_date =
|
||||
(SELECT MAX(backup_start_date)'Transaction Log Backup Status'
|
||||
FROM msdb..backupset
|
||||
WHERE database_name = d.database_name
|
||||
AND TYPE = 'L')
|
||||
WHERE s.name <>'tempdb'
|
||||
ORDER BY s.name
|
||||
@@ -0,0 +1,9 @@
|
||||
select
|
||||
a.name, b.total_elapsed_time/60000 as [Running time],
|
||||
b.estimated_completion_time/60000 as [Remaining],
|
||||
b.percent_complete as [%],
|
||||
(select text from sys.dm_exec_sql_text(b.sql_handle)) as command,
|
||||
b.wait_type
|
||||
from master..sysdatabases a, sys.dm_exec_requests b
|
||||
where a.dbid=b.database_id and b.command like '%BACKUP%'
|
||||
order by percent_complete desc, b.total_elapsed_time/60000 desc
|
||||
Reference in New Issue
Block a user