Sql-Server
T-SQL 查詢以查找特定維護計劃的備份文件夾
我想檢查備份計劃是否設置正確並需要查詢不同的伺服器,主要是 SQL Server 2008,但也有 2012。
有沒有辦法查詢數據庫維護計劃、備份文件夾、啟動時間等資訊?
到目前為止,我只有這個:
select name, subplan_name from msdb.dbo.sysmaintplan_subplans sp join msdb.dbo.sysmaintplan_plans p on p.id = sp.plan_id
大多數情況下,這與新伺服器有關,因此備份還沒有機會執行,導致日誌無用。
您可以使用 msdb 中的可用視圖來查找有關備份的資訊:
- dbo.backupse t:提供有關備份過程最詳細的資訊
- dbo.backupmediafamily: 為與備份集相關的物理備份文件提供元數據。
- dbo.backupfile:此系統視圖為物理備份文件提供最精細的資訊
您可以使用下面的 T-SQL 程式碼列出所有必需的資訊:
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() - 1) ORDER BY msdb.dbo.backupset.database_name, msdb.dbo.backupset.backup_finish_date