为 SQL 服务器 2008-2014 的备份状态创建视图

Creating a view for the backup status of a SQL Server 2008-2014

我需要为 SQL 服务器创建备份状态视图。输出应如下所示:

差异:0 天
备份数据库完全完成
开始:2016.01.30 19:48:03
结束:2016.01.30 22:34:51
持续时间 02:46:48
大小(GB):1,156.77
备份类型(TSM 或 SQL 服务器维护计划)
数据库名称

关于如何为 SQL 服务器执行此操作的任何想法? 是否可以确定备份是使用 TSM TDP 还是使用 SQL 服务器维护计划进行的?

MSDB:

SELECT
      backup_type =
            CASE f.[type]
                WHEN 'D' THEN 'Full'
                WHEN 'L' THEN 'Log'
                WHEN 'I' THEN 'Diff'
            END
    , f.database_name
    , f.backup_start_date
    , f.backup_finish_date
    , duration = CAST(f.backup_finish_date - f.backup_start_date AS TIME)
    , f.backup_size
    , b.physical_device_name
FROM (
    SELECT
          s.media_set_id
        , s.[type]
        , s.database_name
        , s.backup_start_date
        , s.backup_finish_date
        , backup_size =
            CASE WHEN s.backup_size = s.compressed_backup_size
                THEN s.backup_size
                ELSE s.compressed_backup_size
            END / 1048576.
        , RowNum = ROW_NUMBER() OVER (PARTITION BY s.database_name, s.[type] ORDER BY s.backup_finish_date DESC)
    FROM msdb.dbo.backupset s
    --WHERE s.database_name = DB_NAME()
) f
JOIN msdb.dbo.backupmediafamily b ON f.media_set_id = b.media_set_id
WHERE f.RowNum = 1
ORDER BY f.backup_finish_date DESC

输出-

backup_type database_name        backup_start_date    backup_finish_date   duration   backup_size   physical_device_name
----------- -------------------- -------------------- -------------------- ---------- ------------- ------------------------------------------------------------
Full        model                2016-02-25 15:14:20  2016-02-25 15:14:21  00:00:01   0.52112197    G:\model.bak
Full        kh_sql_server        2016-02-25 13:13:38  2016-02-25 13:13:38  00:00:00   0.53086376    D:\DATABASES\SQL_2012\BACKUP\kh_sql_server.bak
Full        master               2016-02-24 13:27:24  2016-02-24 13:27:26  00:00:02   32.95404911   G:\tempdb.bak
Full        AdventureWorks2012   2016-02-11 13:46:14  2016-02-11 13:46:16  00:00:02   44.70329856   E:\SHARE_BACKUP\AdventureWorks\AdventureWorks2012.bak
Full        Refactoring          2016-01-05 18:59:08  2016-01-05 18:59:10  00:00:02   37.53390598   NUL
Log         shrink_test          2016-01-05 18:56:07  2016-01-05 18:56:07  00:00:00   0.02001571    NUL
Full        shrink_test          2016-01-05 18:49:14  2016-01-05 18:49:14  00:00:00   0.45571231    NUL
Full        backup_test          2015-12-21 14:49:01  2015-12-21 14:49:02  00:00:01   0.45937156    D:\DATABASES\SQL_2012\BACKUP\backup_test.bak
Full        users                2015-11-23 13:15:44  2015-11-23 13:15:45  00:00:01   0.72006702    D:\DATABASES\SQL_2012\BACKUP\users.bak
Full        OnlineFormatFull     2015-11-06 15:08:38  2015-11-06 15:08:39  00:00:01   23.63910865   D:\DATABASES\SQL_2012\BACKUP\T20151106_OnlineFormatFull.bak

默认跟踪:

SELECT
    CASE WHEN t.EventSubClass = 1
        THEN 'BACKUP' 
        ELSE 'RESTORE'
    END, t.TextData, t.ApplicationName, t.LoginName, t.StartTime, t.EndTime
FROM sys.traces i
CROSS APPLY sys.fn_trace_gettable([path], DEFAULT) t
WHERE i.is_default = 1
    AND t.EventClass = 115 -- Audit Backup/Restore Event