星期一, 12月 13, 2021

[SQL] 維護計畫 - 檢查資料庫完整性

在 [SQL] DBCC CheckDB 發信通知 內是直接寫語法來偵測 DBCC CheckDB 是否有偵測異常,有就發信通知,該篇使用 [維護計畫 - 檢查資料庫完整性] 來達到相同效果,紀錄相關重點

定義資料庫檢查完整性工作

[包含索引] 和 [僅限實體] 為預設勾選項目

[SQL] 維護計畫 - 檢查資料庫完整-7
  • 包含索引:檢查所有的索引頁面以及資料表資料頁面的完整性
  • 僅限實體:將檢查限制於頁面實體結構、記錄標頭的完整性,以及資料庫配置的一致性。 使用此選項可縮短 DBCC CHECKDB 對大型資料庫的執行階段,因此,建議您在實際系統上經常使用
  • Tablock:使 DBCC CHECKDB 取得鎖定,而不使用內部資料庫快照集。 這包括資料庫上的短期獨佔 (X) 鎖定。 使用此選項可協助 DBCC CHECKDB 在大量負載的資料庫上執行得快一些,但 DBCC CHECKDB 執行時,資料庫可用的並行處理能力會降低
  • 平行處理原則的最大程度:使用維護計畫精靈 內雖然沒有說明,但這很明顯是 DBCC CheckDB 執行時,可以限制 CPU 使用

選取報表選項

預設為 [將報表寫入文字檔],在這邊改以 [以電子郵件傳送報表] 為主,收件者為事先設定好的 operator

[SQL] 維護計畫 - 檢查資料庫完整-8

假如沒有事先設定 operator 的話,勾選 [以電子郵件傳送報表] 時,會出現下面訊息 [系統沒有定義運算子],運算子就是 operator,這翻譯很有問題,好歹也應該是 [操作員] 才是

[SQL] 維護計畫 - 檢查資料庫完整-15

執行維護計畫

因為設定發信,所以檢查完畢後,會發信通知 operator

[SQL] 維護計畫 - 檢查資料庫完整-11

參考該篇 - [SQL] 模擬資料庫毀損 破壞 AdventureWorks2017,再次執行維護計畫,發出的 Email 訊息內,有包含 DBCC CheckDB 內的檢查訊息,特別把錯誤訊息抓出來
失敗:(-1073548784) 執行查詢 "DBCC CHECKDB(N'AdventureWorks2017')  WITH  PHYSICA..." 失敗,發生下列錯誤: "資料表錯誤: 物件識別碼 1893581784,索引識別碼 1,分割區識別碼 72057594049200128,配置單位識別碼 72057594056933376 (類型 In-row data),頁面 (1:12640)。測試 (IS_OFF (BUF_IOERR, pBUF->bstat)) 失敗。值為 133129 和 -4。

物件識別碼 1893581784,索引識別碼 1,分割區識別碼 72057594049200128,配置單位識別碼 72057594056933376 (類型 In-row data): 頁面 (1:12640) 無法處理。請參閱其他錯誤以取得詳細資料。

DBCC 對 'AdventureWorks2017' 的結果。CHECKDB 發現了資料表 'HumanResources.Employee' (物件識別碼 1893581784) 中 0 個配置錯誤和 2 個一致性錯誤。CHECKDB 發現了資料庫 'AdventureWorks2017' 中 0 個配置錯誤和 2 個一致性錯誤。

repair_allow_data_loss 是 DBCC CHECKDB (AdventureWorks2017) 所發現之錯誤的最小修復層級。DBCC 的執行已經完成。如果 DBCC 印出錯誤訊息,請連絡您的系統管理員。"。

可能的失敗原因: 查詢發生問題、未正確設定 "ResultSet" 屬性、未正確設定參數,或未正確建立連接。
Email 截圖

[SQL] 維護計畫 - 檢查資料庫完整-13

檢視 T-SQL 選項

建立完成後可以進修改,可以看見 DBCC CheckDB 設定選項,會多出現一個 [檢視 T-SQL] 按鈕 

  [SQL] 維護計畫 - 檢查資料庫完整-18

產生的 TSQL 執行語法
use [AdventureWorks2017];
GO
DBCC CHECKDB(N'AdventureWorks2017')  WITH  PHYSICAL_ONLY  

報表與紀錄

SSMS 上圖示

       [SQL] 維護計畫 - 檢查資料庫完整-20

該介面內較特別之處在於多出 [紀錄] 選項

[SQL] 維護計畫 - 檢查資料庫完整-21
  • 紀錄擴充資訊:在記錄檔中包含更多資訊。 包含此選項會增加預存維護計畫記錄的大小。白話說明就是會記錄執行計畫使用的 TSQL 語法,此為預設勾選選項
  • 記錄到遠端伺服器:將維護計畫記錄記錄到遠端伺服器

紀錄擴充資訊範例

[SQL] 維護計畫 - 檢查資料庫完整-22

沒有留言:

張貼留言