日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:39日期: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
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国际精品欧美精品| 国产一区日韩欧美| 久久av免费| 亚洲精品日本| 成人国产精品一区二区免费麻豆| 欧美日中文字幕| 尹人成人综合网| 免费不卡中文字幕在线| 日韩av免费| 免费欧美在线视频| 国产精品theporn| 国产精品久久久网站| 婷婷激情一区| 日韩影院二区| 一区在线观看| 免费国产亚洲视频| 日韩精品免费观看视频| 国产美女视频一区二区| 精品三级在线| 欧美粗暴jizz性欧美20| 麻豆精品91| 91伊人久久| 精品久久中文| 性欧美xxxx免费岛国不卡电影| 中国女人久久久| 日韩精品视频一区二区三区| 美女av一区| 日韩精品免费一区二区三区| 欧美 日韩 国产一区二区在线视频| 日韩一区二区久久| 欧美欧美黄在线二区| 欧美国产偷国产精品三区| 免费视频一区三区| 日韩一区二区三免费高清在线观看| 精品国产亚洲一区二区在线观看| 999精品一区| 奇米色欧美一区二区三区| 91亚洲一区| 天堂成人免费av电影一区| 国产欧美久久一区二区三区| 神马午夜久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美激情91| 999久久久国产精品| 亚洲欧美专区| 国产精品久久久久蜜臀| 午夜亚洲福利在线老司机| 国产欧美一区二区精品久久久| 在线亚洲人成| 五月激激激综合网色播| 亚洲综合电影| 日韩精品中文字幕一区二区| 日韩在线视频精品| 日韩精品视频在线看| 色天使综合视频| 青青草精品视频| 久久青草久久| 国产精品密蕾丝视频下载| 欧美日中文字幕| 国产精品久久久久毛片大屁完整版| 一区二区三区四区在线看| 国产探花一区二区| 欧美大黑bbbbbbbbb在线| 久久不卡日韩美女| 视频在线观看91| 日韩福利一区| 久久国产麻豆精品| 亚洲一卡久久| 天堂8中文在线最新版在线| 青青草91视频| 亚洲一区亚洲| 国产在线观看www| 国产日韩欧美中文在线| 亚洲性视频h| 麻豆视频在线观看免费网站黄| 日本不卡在线视频| 怡红院精品视频在线观看极品| 国产一区福利| 国产欧美丝祙| 日韩激情精品| 蜜桃91丨九色丨蝌蚪91桃色| 久久精品国产68国产精品亚洲| 国产精品115| 涩涩涩久久久成人精品| 亚洲成人一区| 新版的欧美在线视频| 久久不卡日韩美女| 日本在线成人| 亚洲国产影院| 成人美女视频| 六月丁香综合在线视频| 国产日韩免费| 日韩中文字幕一区二区高清99| av成人国产| 欧美日韩国产免费观看视频| 色一区二区三区| 激情综合五月| 免费亚洲婷婷| 久久不卡日韩美女| 国产精品网址| 欧美日韩午夜电影网| 日本成人手机在线| 日韩视频一二区| 视频一区二区欧美| 亚洲欧美日韩国产综合精品二区 | 国产精品超碰| 欧美一区久久| 日韩精品1区2区3区| 亚洲精品免费观看| 亚洲精品免费观看| 日韩**一区毛片| 日韩av电影一区| 日本精品一区二区三区在线观看视频| 久久最新视频| 日韩精品一二三四| 午夜精品一区二区三区国产| 啪啪国产精品| 999精品色在线播放| 久久精品二区三区| 久久网站免费观看| 激情欧美日韩一区| 99视频一区| 一本一道久久a久久| 蜜桃av一区二区在线观看| 亚洲一区二区三区久久久| 蜜臀av一区二区三区| 亚洲3区在线| 青青草精品视频| 美女高潮久久久| 亚洲国产福利| 黄色在线网站噜噜噜| 精品欧美一区二区三区在线观看| 日韩欧美中文| 综合亚洲视频| 日韩区一区二| 中文在线免费视频| 人人爽香蕉精品| 精品精品国产三级a∨在线| 性欧美xxxx免费岛国不卡电影| 亚洲图片久久| 韩日一区二区| 日韩在线a电影| 久久精品国产99| 亚洲第一精品影视| 日韩精品社区| 国产成人精品999在线观看| 91久久午夜| 欧美精品aa| 欧美在线亚洲| 久久99精品久久久野外观看| 不卡中文字幕| 麻豆成人av在线| 国产精品伦一区二区| 亚洲天堂免费电影| 免费在线观看视频一区| 国产亚洲一区二区三区啪| 不卡专区在线| 久久福利精品| 国产欧美一区二区三区国产幕精品 | 日韩一区二区久久| 日韩精品国产欧美| 91日韩在线| 免费成人av在线播放| 国产精品久久久久久久久久齐齐| 国产欧美一区二区三区精品酒店| 日韩午夜高潮| 国产日韩视频在线| 日韩伦理一区| 在线观看一区| 国产成人精品免费视| 在线综合亚洲| 麻豆中文一区二区| 1000部精品久久久久久久久| 日本一区中文字幕| 国产一二在线播放| 视频在线观看91| 精品淫伦v久久水蜜桃| 9色精品在线| 久久精品国产999大香线蕉| 99国产精品久久久久久久成人热| 国产日韩在线观看视频| 久久亚洲国产| 国产精品久久免费视频| 欧美 日韩 国产一区二区在线视频| 97精品资源在线观看| 国产一区欧美| 国产精品三级| 99国产精品私拍| 久久精品欧洲| 综合激情视频| 久久国产直播| 国产精品日本一区二区不卡视频| 亚洲女同中文字幕| 国产一区国产二区国产三区| 免费观看久久久4p| 日韩不卡免费高清视频| 国产精品一卡| 免费的成人av| 亚洲h色精品| 精品视频久久|