电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SQL Server數據庫判斷最近一次的備份執行結果(最新推薦)

瀏覽:2日期:2023-05-02 10:03:12
目錄
  • 1 麻煩的地方
  • 2 獲取errorlog的trace表
  • 3 結合備份表backupset,判斷備份狀態篩選出所有數據庫的備份任務執行情況
  • 4 形成用于告警的SQL語句

1 麻煩的地方

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

2 獲取errorlog的trace表

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

定位errorlog的trace文件物理路徑

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

輸出結果:

2. 得到路徑后,使用fn_trace_gettable將errolog的trace文件轉換為普通的數據表

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

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

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

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

3 結合備份表backupset,判斷備份狀態篩選出所有數據庫的備份任務執行情況

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

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

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) + "數據庫備份失敗"    ELSE (dt.DatabaseName) + "數據庫備份成功"  ENDFROM  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)  ) < 5WHERE  dt.EventClass = 115  AND UPPER(CONVERT(nvarchar(max), dt.TextData)) LIKE N"BACKUP%"ORDER BY  dt.StartTime DESC;

4 形成用于告警的SQL語句

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

第1種,游標查看每個數據庫最近一次備份狀態

DBCC FREEDECLARE @databaseName1 nvarchar(100)DECLARE @sql nvarchar(4000)DECLARE db_cursor CURSOR FOR    SELECT name    FROM sys.databasesOPEN db_cursorFETCH NEXT FROM db_cursor INTO @databaseName1WHILE @@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) + ""數據庫備份失敗""    ELSE (dt.DatabaseName) + ""數據庫備份成功""  ENDFROM  sys.fn_trace_gettable(    (      SELECTREVERSE(  SUBSTRING(    REVERSE([path]),    CHARINDEX(CHAR(92), REVERSE([path])),    260  )) + N""log.trc""      FROMsys.traces      WHEREis_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)  ) < 5WHERE  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 @databaseName1END CLOSE db_cursorDEALLOCATE db_cursor

可以看到性能極差,查詢3條數據耗時24秒,每次游標都要到消耗臨時表和進行大量的邏輯讀取。

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

第2種,使用MAX函數和group by優化

SELECT    [Status] = MAX(CASE      WHEN bs.backup_start_date IS NULL THEN dt.DatabaseName+"數據庫備份失敗"      ELSE dt.DatabaseName+"數據庫備份成功"    END)  FROM    sys.fn_trace_gettable(      (SELECT  REVERSE(    SUBSTRING(      REVERSE([path]),      CHARINDEX(CHAR(92), REVERSE([path])),      260    )  ) + N"log.trc"FROM  sys.tracesWHERE  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

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

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

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

到此這篇關于SQL Server數據庫判斷最近一次的備份執行結果的文章就介紹到這了,更多相關SQL Server最近一次的備份執行結果內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: MsSQL
主站蜘蛛池模板: 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 鲁尔圆锥接头多功能测试仪-留置针测试仪-上海威夏环保科技有限公司 | 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 压滤机滤板_厢式_隔膜_板框压滤机滤板厂家价格型号材质-大凯环保 | 汽车润滑油厂家-机油/润滑油代理-高性能机油-领驰慧润滑科技(河北)有限公司 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 电镀整流器_微弧氧化电源_高频电解电源_微弧氧化设备厂家_深圳开瑞节能 | 数字展示在线_数字展示行业门户网站 | 液氮罐_液氮容器_自增压液氮罐-北京君方科仪科技发展有限公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 低浓度恒温恒湿称量系统,强光光照培养箱-上海三腾仪器有限公司 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 翅片管换热器「型号全」_厂家-淄博鑫科环保 | 陕西鹏展科技有限公司| 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 北京中航时代-耐电压击穿试验仪厂家-电压击穿试验机 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 | 手术示教系统-数字化手术室系统-林之硕医疗云智能视频平台 | 物流公司电话|附近物流公司电话上门取货 | 珠宝展柜-玻璃精品展柜-首饰珠宝展示柜定制-鸿钛展柜厂家 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 润滑脂-高温润滑脂-轴承润滑脂-食品级润滑油-索科润滑油脂厂家 |