-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathData Collection
More file actions
73 lines (65 loc) · 1.72 KB
/
Copy pathData Collection
File metadata and controls
73 lines (65 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
IF OBJECT_ID('dbo.BackupMonitoringHistory') IS NULL
BEGIN
CREATE TABLE dbo.BackupMonitoringHistory
(
BackupID BIGINT IDENTITY(1,1) PRIMARY KEY,
DatabaseName SYSNAME,
BackupStartDate DATETIME,
BackupFinishDate DATETIME,
BackupType VARCHAR(20),
DurationSeconds INT,
BackupSizeMB DECIMAL(18,2),
CompressedBackupSizeMB DECIMAL(18,2),
ChecksumStatus BIT,
LastLSN NUMERIC(25,0),
FirstLSN NUMERIC(25,0),
CollectionDate DATETIME DEFAULT GETDATE()
);
END
GO
INSERT INTO dbo.BackupMonitoringHistory
(
DatabaseName,
BackupStartDate,
BackupFinishDate,
BackupType,
DurationSeconds,
BackupSizeMB,
CompressedBackupSizeMB,
ChecksumStatus,
LastLSN,
FirstLSN
)
SELECT
bs.database_name,
bs.backup_start_date,
bs.backup_finish_date,
CASE bs.type
WHEN 'D' THEN 'FULL'
WHEN 'I' THEN 'DIFF'
WHEN 'L' THEN 'LOG'
ELSE 'OTHER'
END AS BackupType,
-- Prevent zero duration for fast backups
CASE
WHEN DATEDIFF(SECOND, bs.backup_start_date, bs.backup_finish_date) = 0
THEN 1
ELSE DATEDIFF(SECOND, bs.backup_start_date, bs.backup_finish_date)
END AS DurationSeconds,
CAST(bs.backup_size / 1048576.0 AS DECIMAL(18,2))
AS BackupSizeMB,
CAST(bs.compressed_backup_size / 1048576.0 AS DECIMAL(18,2))
AS CompressedBackupSizeMB,
CASE
WHEN bs.has_backup_checksums = 1
THEN 1
ELSE 0
END AS ChecksumStatus,
bs.last_lsn,
bs.first_lsn
FROM msdb.dbo.backupset bs
WHERE
bs.backup_finish_date IS NOT NULL
AND bs.backup_start_date >= DATEADD(HOUR, -1, GETDATE())
ORDER BY bs.backup_start_date;
GO