問題
有很多數據需要在微軟SQL Server系統視圖內部挖掘。這些數據被用來把信息展示給SQL Server Management Studio的終端用戶和SQL Server專業人士可用的第三方管理工具。這些數據不但在數據庫備份信息,文件數據統計分析,索引信息或者這個實例包含的數千個度量標准中的某一個等方面有突出貢獻,而且可以用於直接查詢和吸收到你的土生土長檢測解決方案中。這篇文章旨在說明第一個衡量標准:數據庫備份信息。它在什麼地方?它的結構是什麼樣的?還有什麼樣的數據可以挖掘?
專家解答
Msdb系統數據庫是存儲SQL Agent,備份,服務代理,數據庫郵件,日志傳送,恢復和維護計劃元數據的主要存儲庫。我們將在這個技巧中集中講解與數據庫備份有關的一些系統視圖。
l dbo.backupset: 提供與備份過程最細粒的細節有關的信息。
l dbo.backupmediafamily: 為物理備份文件提供元數據,因為它們與備份集合有關。
l dbo.backupfile: 系統視圖為物理備份文件提供最細粒的信息。
根據這些表格,我們可以創建不同的查詢語句來獲得對任何給定SQL Server實例中的數據庫備份狀態更詳細的了解。
上周所有數據庫的數據庫備份
-----------------------------------------------------------
--Database Backups for all databases For Previous Week
-----------------------------------------------------------
SELECT
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_start_date,
msdb.dbo.backupset.backup_finish_date,
msdb.dbo.backupset.expiration_date,
CASE msdb..backupset.type
WHEN 'D' THEN 'Database'
WHEN 'L' THEN 'Log'
END AS backup_type,
msdb.dbo.backupset.backup_size,
msdb.dbo.backupmediafamily.logical_device_name,
msdb.dbo.backupmediafamily.physical_device_name,
msdb.dbo.backupset.name AS backupset_name,
msdb.dbo.backupset.description
FROM msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7)
ORDER BY
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_finish_date
注意:考慮到可讀性,輸出結果分成兩個截圖。