欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL?Server數(shù)據(jù)庫判斷最近一次的備份執(zhí)行結(jié)果(最新推薦)

 更新時間:2023年05月09日 08:25:08   作者:開始折騰吧!  
這篇文章主要介紹了SQL?Server數(shù)據(jù)庫判斷最近一次的備份執(zhí)行結(jié)果,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1 麻煩的地方

在SQL Server的官方文檔里面可以看到備份和還原的表,但是這些表里面只能找到備份成功的相關(guān)信息,無法找到備份失敗的記錄,比如msdb.dbo.backupset。對于一些監(jiān)控系統(tǒng)未監(jiān)控作業(yè)的情況下,想要監(jiān)控數(shù)據(jù)庫備份任務(wù)執(zhí)行失敗而觸發(fā)告警規(guī)則,有些麻煩。
但是SQL server內(nèi)部是可以通過查詢errorlog來判斷數(shù)據(jù)庫備份作業(yè)是否成功:

2 獲取errorlog的trace表

我們可以借助sys.traces定位到errorlog的trace文件路徑,然后通過再通過fn_trace_gettable將errlog的trace文件轉(zhuǎn)換為普通的表來查詢即可。

定位errorlog的trace文件物理路徑

SELECT
          REVERSE(
            SUBSTRING(
              REVERSE([path]),
              CHARINDEX(CHAR(92), REVERSE([path])),
              260
            )
          ) + N'log.trc'
        FROM
          sys.traces
        WHERE
          is_default = 1

輸出結(jié)果:

2. 得到路徑后,使用fn_trace_gettable將errolog的trace文件轉(zhuǎn)換為普通的數(shù)據(jù)表

SELECT
  *
FROM
  sys.fn_trace_gettable(
    'S:\MSSQL13.MSSQLSERVER\MSSQL\Log\log.trc',
    default
  )

3. 查找與備份相關(guān)的事件記錄,在trace文件中對應(yīng)的EventClass為115,并將所有備份開頭的語句篩選出來

SELECT
  TextData,Databasename,StartTime
FROM
  sys.fn_trace_gettable(
    'S:\MSSQL13.MSSQLSERVER\MSSQL\Log\log.trc',
    default
  )
WHERE
  EventClass = 115
  AND UPPER(CONVERT(nvarchar(max), TextData)) LIKE 'BACKUP%'

從返回的TextData中沒有找到是否關(guān)于備份成功或者失敗的說明,也沒有在其它列中找到相關(guān)描述,需要結(jié)合msdb.dbo.backupset來判斷。

3 結(jié)合備份表backupset,判斷備份狀態(tài)篩選出所有數(shù)據(jù)庫的備份任務(wù)執(zhí)行情況

從查詢的結(jié)果可知,每個成功的備份都有1個開始時間和結(jié)束時間,考慮將開始時間與trace文件轉(zhuǎn)換的表進(jìn)行對比: flowchart LR A[trace表的獲取備份記錄和時間]--> B[取得StartTime列]B[與backupset表對比判斷]--> C{是否存在與StartTime列對應(yīng)的值}C--存在-->D[備份成功]C--不存在-->E[備份失敗]

形成了具體的思路后,下面將trace轉(zhuǎn)換的表的StartTime列與backupset表的backup_start_date列進(jìn)行對比判斷
2. 判斷存在對應(yīng)的值則說明備份成功,不存在則備份失敗

SELECT
  dt.DatabaseName,
  dt.StartTime,
  bs.backup_start_date,
  bs.backup_finish_date,
  [Status] = CASE
    WHEN bs.backup_start_date IS NULL THEN (dt.DatabaseName) + '數(shù)據(jù)庫備份失敗'
    ELSE (dt.DatabaseName) + '數(shù)據(jù)庫備份成功'
  END
FROM
  sys.fn_trace_gettable(
    'S:\MSSQL13.MSSQLSERVER\MSSQL\Log\log.trc',
    default
  ) AS dt
  LEFT OUTER JOIN msdb.dbo.backupset AS bs ON dt.DatabaseName = bs.database_name
  AND ABS(
    DATEDIFF(SECOND, dt.StartTime, bs.backup_start_date)
  ) < 5
WHERE
  dt.EventClass = 115
  AND UPPER(CONVERT(nvarchar(max), dt.TextData)) LIKE N'BACKUP%'
ORDER BY
  dt.StartTime DESC;

4 形成用于告警的SQL語句

完成上面的操作之后,我們已經(jīng)能夠看到所有數(shù)據(jù)庫的備份是成功還是失敗的狀態(tài),現(xiàn)在還需要將SQL再度細(xì)化,輸出所有數(shù)據(jù)庫最近一次備份執(zhí)行成功或者失敗的信息:即每個數(shù)據(jù)庫只有一行記錄用于說明最近一次的備份狀態(tài)。
下面有兩種寫法可以實現(xiàn),第1種是游標(biāo)的寫法,性能極差,后來找chatgpt一起討論之后,采用了group by優(yōu)化,形成第2種寫法。

第1種,游標(biāo)查看每個數(shù)據(jù)庫最近一次備份狀態(tài)

DBCC FREE
DECLARE @databaseName1 nvarchar(100)
DECLARE @sql nvarchar(4000)
DECLARE db_cursor CURSOR FOR
    SELECT name
    FROM sys.databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @databaseName1
WHILE @@FETCH_STATUS = 0  
BEGIN  
    SET @sql = '
	SELECT
  TOP 1 dt.DatabaseName,
  dt.StartTime,
  bs.backup_start_date,
  bs.backup_finish_date,
  [Status] = CASE
    WHEN bs.backup_start_date IS NULL THEN (dt.DatabaseName) + ''數(shù)據(jù)庫備份失敗''
    ELSE (dt.DatabaseName) + ''數(shù)據(jù)庫備份成功''
  END
FROM
  sys.fn_trace_gettable(
    (
      SELECT
        REVERSE(
          SUBSTRING(
            REVERSE([path]),
            CHARINDEX(CHAR(92), REVERSE([path])),
            260
          )
        ) + N''log.trc''
      FROM
        sys.traces
      WHERE
        is_default = 1
    ),
    default
  ) AS dt
  LEFT OUTER JOIN msdb.dbo.backupset AS bs ON dt.DatabaseName = bs.database_name
  AND ABS(
    DATEDIFF(SECOND, dt.StartTime, bs.backup_start_date)
  ) < 5
WHERE
  dt.EventClass = 115
  AND UPPER(CONVERT(nvarchar(max), dt.TextData)) LIKE N''BACKUP%''
  AND dt.DatabaseName=''' + @databaseName1 +''' ORDER BY dt.StartTime DESC'
    EXEC sp_executesql @sql
    FETCH NEXT FROM db_cursor INTO @databaseName1
END 
CLOSE db_cursor
DEALLOCATE db_cursor

可以看到性能極差,查詢3條數(shù)據(jù)耗時24秒,每次游標(biāo)都要到消耗臨時表和進(jìn)行大量的邏輯讀取。

 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 14 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysobjvalues'。掃描計數(shù) 14,邏輯讀取 36 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syspalvalues'。掃描計數(shù) 0,邏輯讀取 98 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysguidrefs'。掃描計數(shù) 2,邏輯讀取 30 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysclsobjs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syssingleobjrefs'。掃描計數(shù) 7,邏輯讀取 42 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysdbreg'。掃描計數(shù) 1,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 31 毫秒,占用時間 = 27 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysobjvalues'。掃描計數(shù) 2,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syspalvalues'。掃描計數(shù) 0,邏輯讀取 14 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysguidrefs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysclsobjs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syssingleobjrefs'。掃描計數(shù) 1,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysdbreg'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 16 毫秒,占用時間 = 23 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
(1 行受影響)
表 'backupset'。掃描計數(shù) 1,邏輯讀取 3 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 468 毫秒,占用時間 = 678 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 468 毫秒,占用時間 = 678 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysobjvalues'。掃描計數(shù) 2,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syspalvalues'。掃描計數(shù) 0,邏輯讀取 14 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysguidrefs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysclsobjs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syssingleobjrefs'。掃描計數(shù) 1,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysdbreg'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 16 毫秒,占用時間 = 23 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
(0 行受影響)
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 406 毫秒,占用時間 = 732 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 406 毫秒,占用時間 = 732 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysobjvalues'。掃描計數(shù) 2,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syspalvalues'。掃描計數(shù) 0,邏輯讀取 14 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysguidrefs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysclsobjs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syssingleobjrefs'。掃描計數(shù) 1,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysdbreg'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 16 毫秒,占用時間 = 21 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
(0 行受影響)
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 422 毫秒,占用時間 = 659 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 422 毫秒,占用時間 = 660 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysobjvalues'。掃描計數(shù) 2,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syspalvalues'。掃描計數(shù) 0,邏輯讀取 14 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysguidrefs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysclsobjs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syssingleobjrefs'。掃描計數(shù) 1,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysdbreg'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 15 毫秒,占用時間 = 616 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
(0 行受影響)
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 375 毫秒,占用時間 = 678 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 375 毫秒,占用時間 = 678 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysobjvalues'。掃描計數(shù) 2,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syspalvalues'。掃描計數(shù) 0,邏輯讀取 14 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysguidrefs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysclsobjs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syssingleobjrefs'。掃描計數(shù) 1,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysdbreg'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 16 毫秒,占用時間 = 1286 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
(1 行受影響)
表 'backupset'。掃描計數(shù) 1,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 375 毫秒,占用時間 = 781 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 375 毫秒,占用時間 = 781 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysobjvalues'。掃描計數(shù) 2,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syspalvalues'。掃描計數(shù) 0,邏輯讀取 14 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysguidrefs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysclsobjs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syssingleobjrefs'。掃描計數(shù) 1,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysdbreg'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 31 毫秒,占用時間 = 1608 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 13 毫秒,占用時間 = 13 毫秒。
(1 行受影響)
表 'backupset'。掃描計數(shù) 1,邏輯讀取 3 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 390 毫秒,占用時間 = 737 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 406 毫秒,占用時間 = 751 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysobjvalues'。掃描計數(shù) 2,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syspalvalues'。掃描計數(shù) 0,邏輯讀取 14 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysguidrefs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysclsobjs'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'syssingleobjrefs'。掃描計數(shù) 1,邏輯讀取 6 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'sysdbreg'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 16 毫秒,占用時間 = 20 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 12 毫秒,占用時間 = 12 毫秒。
(0 行受影響)
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 468 毫秒,占用時間 = 2492 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 484 毫秒,占用時間 = 2505 毫秒。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 2 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
(1 行受影響)
 SQL Server 執(zhí)行時間:
   CPU 時間 = 16 毫秒,占用時間 = 23 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。

第2種,使用MAX函數(shù)和group by優(yōu)化

SELECT
    [Status] = MAX(CASE
      WHEN bs.backup_start_date IS NULL THEN dt.DatabaseName+'數(shù)據(jù)庫備份失敗'
      ELSE dt.DatabaseName+'數(shù)據(jù)庫備份成功'
    END)
  FROM
    sys.fn_trace_gettable(
      (
        SELECT
          REVERSE(
            SUBSTRING(
              REVERSE([path]),
              CHARINDEX(CHAR(92), REVERSE([path])),
              260
            )
          ) + N'log.trc'
        FROM
          sys.traces
        WHERE
          is_default = 1
      ),
      default
    ) AS dt
    LEFT OUTER JOIN msdb.dbo.backupset AS bs ON dt.DatabaseName = bs.database_name
      AND ABS(DATEDIFF(SECOND, dt.StartTime, bs.backup_start_date)) < 5
  WHERE
    dt.EventClass = 115
    AND UPPER(CONVERT(nvarchar(max), dt.TextData)) LIKE 'BACKUP%'
  GROUP BY
    dt.DatabaseName

這次執(zhí)行只要1秒鐘,占用的資源也極低。

SQL Server 分析和編譯時間: 
   CPU 時間 = 15 毫秒,占用時間 = 20 毫秒。
(3 行受影響)
表 'Worktable'。掃描計數(shù) 0,邏輯讀取 0 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
表 'backupset'。掃描計數(shù) 1,邏輯讀取 48 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 469 毫秒,占用時間 = 935 毫秒。
SQL Server 分析和編譯時間: 
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
 SQL Server 執(zhí)行時間:
   CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。

截止到此,基本大功告成了。接下來要實現(xiàn)的就是監(jiān)控系統(tǒng)怎么取得指標(biāo)和觸發(fā)告警,具體可以根據(jù)不同的監(jiān)控平臺進(jìn)行配置。
實際上還可以通過xp_readerrorlog來讀取errlog更加快速得篩選出備份失敗的記錄,但本次沒有再測試,有興趣的朋友可以自行參考測試。

到此這篇關(guān)于SQL Server數(shù)據(jù)庫判斷最近一次的備份執(zhí)行結(jié)果的文章就介紹到這了,更多相關(guān)SQL Server最近一次的備份執(zhí)行結(jié)果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • sql中時間以5分鐘半個小時任意間隔分組的實現(xiàn)方法

    sql中時間以5分鐘半個小時任意間隔分組的實現(xiàn)方法

    這篇文章主要介紹了sql中時間以5分鐘半個小時任意間隔分組的實現(xiàn)方法,在文中給大家提到了sql server時間查詢的代碼,需要的朋友可以參考下
    2019-06-06
  • sql 語句練習(xí)與答案

    sql 語句練習(xí)與答案

    一些對初學(xué)者非常有用的練習(xí),及練習(xí)的答案。希望可以給初學(xué)者一些幫助
    2013-06-06
  • SQL里類似SPLIT的分割字符串函數(shù)

    SQL里類似SPLIT的分割字符串函數(shù)

    SQL對字符串的處理能力比較弱,比如我要循環(huán)遍歷象1,2,3,4,5這樣的字符串,如果用數(shù)組的話,遍歷很簡單,但是T-SQL不支持?jǐn)?shù)組,所以處理下來比較麻煩。下邊的函數(shù),實現(xiàn)了象數(shù)組一樣去處理字符串。
    2011-04-04
  • sql中的left join及on、where條件關(guān)鍵字的區(qū)別詳解

    sql中的left join及on、where條件關(guān)鍵字的區(qū)別詳解

    LEFT JOIN 關(guān)鍵字從左表(table1)返回所有的行,即使右表(table2)中沒有匹配。如果右表中沒有匹配,則結(jié)果為 NULL。這篇文章主要介紹了sql中的left join以及on、where關(guān)鍵字的區(qū)別,需要的朋友可以參考下
    2018-08-08
  • 使用正則表達(dá)式匹配tsql注釋語句

    使用正則表達(dá)式匹配tsql注釋語句

    我相信接觸過SQL Server數(shù)據(jù)庫的很多朋友都知道,它是以"--"開頭來進(jìn)行注釋的,下面的方法是使用正則表達(dá)式匹配tsql注釋語句的方法,大家參考使用吧
    2014-02-02
  • sql集合運(yùn)算符使用方法

    sql集合運(yùn)算符使用方法

    今天介紹數(shù)據(jù)庫里面的集合運(yùn)算符,它是指匹配集合的每一個結(jié)果。數(shù)據(jù)庫集合運(yùn)算符包括:IN、ANY、SOME、ALL以及EXISTS等
    2014-01-01
  • SQLSERVER分頁查詢關(guān)于使用Top方式和row_number()解析函數(shù)的不同

    SQLSERVER分頁查詢關(guān)于使用Top方式和row_number()解析函數(shù)的不同

    這篇文章主要介紹了SQLSERVER分頁查詢關(guān)于使用Top方式和row_number()解析函數(shù)的不同的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • SQL Server的基本功能性語句介紹

    SQL Server的基本功能性語句介紹

    本篇文章介紹了,SQL Server的基本功能性語句。需要的朋友參考下
    2013-04-04
  • delete誤刪數(shù)據(jù)使用SCN號恢復(fù)(推薦)

    delete誤刪數(shù)據(jù)使用SCN號恢復(fù)(推薦)

    這篇文章主要介紹了使用scn號恢復(fù)誤刪數(shù)據(jù)問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • SQL Server中row_number分頁查詢的用法詳解

    SQL Server中row_number分頁查詢的用法詳解

    這篇文章主要介紹了SQL Server中row_number的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論