2010年8月31日

查詢 Microsoft SQL Server 資料庫最近一次的備份狀態

使用 SSMS(SQL Server Management Studio)展開「物件總管」視窗中的資料庫清單,於某個資料庫名稱上,按下滑鼠右鍵,選擇「屬性」(或「內容」)指令,然後在「一般」頁面即可看到資料庫最近一次的備份時間,如下圖所示:

使用 SSMS 得知資料庫最近一次的備份時間

對 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;

執行結果:
查詢資料庫最近一次的備份狀態之結果

沒有留言:

張貼留言