數據庫sql2000錯誤8908及處理

錯誤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 選項的功能而且能夠完成一些耗時的修復操作如
  重建索引此選項不會導致數據丟失

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章