Sql-Server

DBCC CHECKDB 通知

  • September 21, 2021

DBA.SE 上有很多關於DBCC CHECKDB錯誤返回時如何解決問題的問題。我的具體問題是關於實際收到DBCC CHECKDB返回錯誤的通知。大多數 DBA 都知道您可以自動執行該命令並且應該經常執行它。

我偶然發現了Cindy Gross的這篇文章,其中有一些非常好的註釋。在其中,她提到了 SQL Server 代理的使用,如果它在執行命令時發現錯誤,它將導致該步驟(或作業取決於配置)失敗。她在此處指向 Paul Randal 關於該主題的博文。CHECKDB

現在我很好奇是否有人知道維護計劃中的檢查數據庫完整性任務會做同樣的事情?MSDN 沒有提到它會,而且我也沒有真正遇到過腐敗問題的環境;所以不能說它確實如此。正如 Cindy 建議的那樣,這與簡單地設置一個 SQL 代理作業相比,該作業具有多個對每個數據庫執行特定命令的步驟。

想法?顯然,證據就在布丁中,因此提供的不僅僅是猜測會有所幫助……

我設置了一個 SQL Server 2008 R2 實例並擁有以下數據庫:

我設置了一個包含其中的維護計劃Check Database Integrity Task在此處輸入圖像描述

執行計劃後它確實失敗了: 在此處輸入圖像描述

在查看日誌後,它表明它將在遇到因發現損壞而失敗的數據庫後繼續檢查其他數據庫: 在此處輸入圖像描述

維護計劃中提供的檢查數據庫完整性任務對所選數據庫發出 DBCC CHECKDB WITH NO_INFOMSGS。您可以通過點擊任務設置中的 view-SQL 來查看其命令。如果您懷疑生成的 SQL 命令,可以使用 SQL profiler 查看其 SQL 命令。如果發現損壞,具有此維護任務的代理作業將生成錯誤並失敗(使用正確的作業步驟設置)。

在此處輸入圖像描述

需要指出的一點是,執行 DBCC CHECKDB 等同於執行 DBCC CHECKALLOC、DBCC CHECKTABLE、DBCC CHECKCATALOG 和其他驗證。如果您正在執行 DBCC CHECKDB,則不必單獨執行它們。單獨執行它們通常是為了執行特定的完整性檢查,或者由於執行整個 DBCC CHECKDB 的時間有限,需要將完整性檢查分散到較小的任務中。可以在 MSDN 上找到更多資訊

引用自:https://dba.stackexchange.com/questions/39442