Sql-Server
最後一次成功的 DBCC CHECKDB
我知道看著
DBCC PAGE
應該向我展示最後一個已知的好處DBCC CHECKDB
,但我沒有看到這項工作正常。我有一個我知道已損壞的數據庫。如果我執行
DBCC CHECKDB
錯誤將按預期顯示(見下文)。CHECKDB found 0 allocation errors and 1 consistency errors in table 'Blah' (object ID 251147940). Msg 2508, Level 16, State 3, Line 1
當我執行以下內容進行評估
dbi_dbccLastKnownGood
時,我得到了CHECKDB
剛剛執行到第二個的時間。DBCC PAGE ('Blah', 1, 9, 3) WITH TABLERESULTS;
我已經閱讀了 Paul Randal 的資訊,從中看來,我正在正確地做/閱讀。以前有沒有人見過這個,如果有的話,有什麼想法可以解決它嗎?
這是錯誤的完整範例。我為不同的桌子準備了 12 個。
Msg 2508, Level 16, State 3, Line 1 The In-row data RSVD page count for object "Mailings", index ID 0, partition ID 16459231395840, alloc unit ID 16459231395840 (type In-row data) is incorrect. Run DBCC UPDATEUSAGE. CHECKDB found 0 allocation errors and 1 consistency errors in table Mailings' (object ID 251147940).
來自CHECKDB 從各個角度:DBCC CHECKDB 上次成功執行是什麼時候?保羅蘭德爾:
我們在 SQL Server 2005 中加入的一項新功能是儲存DBCC CHECKDB上一次成功完成的時間(稱為最後一次已知的好時間)。這是 DBCC CHECKDB開始的時間,而不是完成的時間。
成功是什麼意思?這就是問題所在——如果DBCC CHECKDB執行完成,那麼它認為執行成功——即使它發現了一些損壞。但是,只有在沒有發現損壞的情況下才會更新最後一次已知的好時間。我知道有點混亂。
似乎有些矛盾,但我同意如果報告錯誤,這聽起來不是該欄位更新的預期行為。
另一方面,您的範例是非常小的問題,可以通過執行輕鬆修復,
DBCC UPDATEUSAGE
因此 SQL Server 可能會將其視為成功執行。