錯誤8908:表錯誤:數據庫ID34,對象ID3,索引ID0。鏈的鏈接不匹配。(1:9342)->next = (1:1808),但(1:1808)->prev = (1:1351)。
(在數據庫‘UlandSystem’(34)中。
解釋
當 Microsoft® SQL Server 在與表關聯的一個頁鏈的頁鏈接中檢測到不一致時(例如當某頁的 next 指針指向一頁,而該頁的 previous 指針卻向回指向另一頁時),會出現該錯誤。表數據具有一個雙向鏈接頁鏈,每個索引級別也具有一個這樣的頁鏈。
對策
通過檢查錯誤信息中的 current page 確定損壞的表。執行不帶修復子句的 DBCC CHECKDB 以確定損壞的程度。然后,執行帶有適當修復子句的 DBCC CHECKDB 以修復損壞部分。如果該頁與索引相關聯,有時除去索引可能解決問題。在多數情況下,必須從已知的干凈備份恢復數據庫。
如果錯誤涉及索引頁,請使用 REPAIR_REBUILD 子句。如果錯誤涉及數據頁,可能需要使用 REPAIR_ALLOW_DATA_LOSS 子句。在不允許丟失數據的可能事件中,將需要從已知的干凈備份進行還原。如果問題仍然存在,請與您的主要支持提供者聯系。使 DBCC CHECKDB 的輸出可查閱。
重要
如果執行帶有修復子句之一的 DBCC CHECKDB 未更正索引問題,或者您不確定帶有修復子句的 DBCC CHECKDB 對數據的作用,請與您的主要支持提供者聯系。
除 SQL Server 錯誤日志外,還應檢查操作系統錯誤日志文件,以確定是否是硬件錯誤造成損壞。
如果問題仍然存在,請與您的主要支持提供者聯系。
注:
使用數據庫的過程中,由於斷電或其他原因,有可能導致數據庫出現一些小錯誤,比如檢索某些表特別慢,查詢不到符合條件的數據等.
出現這些情況的原因,往往是因為數據庫有些損壞,或索引不完整.
在ACCESS中,有個修復數據庫的功能可以解決這個問題,在SQL企業管理器,沒有這個功能,要用語句來完成,下面就介紹如何用 SQL 語句完成數據庫的修復,需要注意的是,在進行下面的操作時,必須斷開所有用戶的連接:
USE MASTER
GO
sp_dboption '你的數據庫名', 'single user', 'true'
Go
DBCC CHECKDB('你的數據庫名', REPAIR_REBUILD)
Go
USE 你的數據庫名
go
exec sp_msforeachtable 'DBCC CHECKTABLE(''?'',REPAIR_REBUILD)'
go
sp_dboption '你的數據庫名', 'single user', 'false'
Go
附:
DBCC CHECKDB('數據庫名稱',REPAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DATA_LOSS:是比較高級的修復方式
REPAIR_FAST:是簡單快速的修復方式
REPAIR_ALLOW_DATA_LOSS
此選項包括REPAIR_REBUILD 選項的所有修復功能而且還包括為糾正分配錯誤
結構性行或頁錯誤而進行數據行或數據頁的分配和解除分配以及刪除被損壞的文本對
象這些修復易引起數據丟失所以可在事務中使用該DBCC 命令這樣用戶可以回
滾所發生的數據變化然后從備份中進行恢復
REPAIR_FAST
該選項只能實現較簡單且耗時少的修復功能例如修復非簇索引中的額外鍵此選項
不會導致數據丟失
REPAIR_REBUILD
此選項包括所有REPAIR_FAST 選項的功能而且能夠完成一些耗時的修復操作如
重建索引此選項不會導致數據丟失