Sql-Server

消息 8905:DBCC CHECKALLOC 錯誤消息

  • March 2, 2016

我們最近經歷了數據庫損壞並執行完整性檢查。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 的最新支持服務包

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