Sql-Server
消息 8905:DBCC CHECKALLOC 錯誤消息
我們最近經歷了數據庫損壞並執行完整性檢查。DBCC CHECKDB 返回了很多一致性錯誤和 2 個分配錯誤。我們通過移動數據、刪除和重新創建相關對象來修復一致性錯誤。
現在我們留下了 2 個分配錯誤,我們不知道如何解決它們。誰能建議我們如何找到這些錯誤的原因?
下面是我們執行的程式碼;
DBCC CHECKALLOC([DBNAME]) WITH NO_INFOMSGS
結果;
Msg 8905, Level 16, State 1, Line 1 Extent (1:9612464) 在數據庫 ID 22 中被標記在 GAM 中分配,但沒有 SGAM 或 IAM 分配它。
消息 8905,級別 16,狀態 1,行 1 範圍 (1:9617504) 數據庫 ID 22 在 GAM 中標記為已分配,但沒有 SGAM 或 IAM 已分配它。
CHECKALLOC 發現 2 個分配錯誤和 0 個與任何單個對象無關的一致性錯誤。
CHECKALLOC 在數據庫“DBNAME”中發現 2 個分配錯誤和 0 個一致性錯誤。
repair_allow_data_loss 是 DBCC CHECKALLOC (DBNAME, noindex) 發現的錯誤的最低修復級別。
我建議進行備份並將數據庫還原到不同的伺服器,然後執行
DBCC CHECKDB ...repair_allow_data_loss
. 這樣您就可以知道是否有任何數據失去。有關詳細資訊,請參閱我的回答。
如果您有一個可以恢復的良好備份,我更願意使用它並將數據從損壞的數據庫中導出。您可以使用 redgate 的數據比較(不是免費的,但我已經使用它並且它是救命稻草)。
確保您對硬體進行診斷並將驅動程序韌體更新到最新版本,並且使用 sql server 2008R2 的最新支持服務包。