對 DBA 來說,可能還想要知道資料庫的復原模式、備份的類型等資訊,此時透過 T-SQL 指令來查詢資料庫最近一次的備份狀態,應該是最好的作法。
msdb 資料庫會儲存 SQL Server Agent 用於排程警示、作業等相關資料,於其中有個與資料庫備份記錄有關的資料表,其名稱為 backupset。 而從 SQL Server 2005 開始,目錄檢視表(Catalog View)sys.databases 則儲存每個 SQL Server 執行個體中獨一的資料庫名稱,因此只要用資料庫名稱來串起這 2 個資料表的關聯便可得知資料庫最近一次的備份狀態。
T-SQL 程式碼:
SELECT D.name 資料庫名稱, 復原模式 = CASE D.recovery_model_desc WHEN 'SIMPLE' THEN '簡單' WHEN 'FULL' THEN '完整' ELSE '大量記錄' END, ISNULL(CONVERT(varchar, BS.bdate, 120), '從未備份過') AS 最後備份日期, 備份類型 = CASE BS.type WHEN 'D' THEN '資料庫' WHEN 'I' THEN '差異資料庫' WHEN 'L' THEN '記錄' WHEN 'F' THEN '檔案或檔案群組' WHEN 'G' THEN '差異檔案' WHEN 'P' THEN '部分' WHEN 'Q' THEN '差異部分' ELSE '' END FROM sys.databases D LEFT JOIN ( SELECT database_name, MAX(backup_finish_date) bdate, type FROM msdb.dbo.backupset GROUP BY database_name, type ) BS ON D.name = BS.database_name ORDER BY 1;
執行結果: