資料庫出現一致性錯誤

2021-08-29 19:10:44 字數 1370 閱讀 5655

修復資料庫出現一致性錯誤和分配錯誤方法 一些資料庫伺服器在使用中有時由於非正常關閉或重新啟動伺服器,可能會發生資料庫錯誤,目前我們的方法基本上是把資料庫匯入到另外乙個空資料庫中來修復。這種方法是可以修復成功的,但是耗時比較長。對於一些比較簡單的資料庫錯誤(比較少的一致性錯誤和非配錯誤)我們可以通過如下方法來修復資料,這樣操作更快.注意:在做任何資料庫操作前請一定注意備份資料庫。並把其它使用資料庫的應用程式停止掉,只啟動sqlserver服務。

第一步:在伺服器上,使用命令列 執行osql –e 命令進入資料庫,

第二步:選擇所使用的資料庫(dbname),並檢查該資料庫是否存在錯誤。 從檢查圖中我們可以看到該資料庫存在4個分配錯誤和1個一致性錯誤。 (注:dbname--為你實際要處理 的資料庫.)

第三步:發現錯誤後我們要開始修復,所使用語句下:

sp_dboption 'dbname', 'single user', 'true'--把資料庫置為單使用者模式

dbcc checkdb('dbname',repair_allow_data_loss)--在允許資料丟失情況下修復資料庫。

如果dbcc checkdb('dbname',repair_a llow_data_loss)語句執行一次不行,可以在多執行幾次直到沒有再提示資料庫有錯誤為止。

第四步:檢查沒有錯誤後,把資料庫重新設定為多使用者模式

sp_dboption 'local', 'single user', 'false'--設定為多使用者模式

這樣這個資料庫的錯誤修復就完成了 。

然後停止掉sqlserver,重新啟動伺服器就可以.這種方法對於一般出現問題可以不用安裝企業管理器。直接在伺服器用osql –e 進入資料庫。然後通過上面兩條命令來修復資料庫。這樣速度比較快。

下面是dbcc的簡單用法:

dbcc checktable (table_name)

檢查指定的表, 檢查索引和資料頁是否正確鏈結, 索引是否正確排序, 所有指標是否一致, 每頁的資料資訊是否合理, 頁偏移是否合理。

dbcc checkdb (database_name)

對指定資料庫的所有表做和checktable 一樣的檢查。

dbcc checkalloc (database_name,fix|nofix)

檢查指定資料庫, 是否所有頁面被正確分配, 是否被分配的頁面沒被使用。當使用"fix"選項時,在檢查資料庫的同時會自動修復有問題的頁面。(若資料庫資料量很大,則該過程會持續很長時間。)

dbcc tablealloc (table_name,fix|nofix)

檢查指定的表, 是否所有頁面被正確分配, 是否被分配的頁面沒被使用。是 checkalloc 的縮小版本, 對指定的表做完整性檢查。當使用"fix"選項時,在檢查資料表的同時會自動修復資料表中有問題的頁面。

資料庫一致性

資料庫一致性 database consistency 是指事務執行的結果必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。保證資料庫一致性是指當事務完成時,必須使所有資料都具有一致的狀態。在關係型資料庫中,所有的規則必須應用到事務的修改上,以便維護所有資料的完整性。保證資料庫的一致性是資料庫管理...

資料庫的強一致性和弱一致性

強一致性可以理解為在任意時刻,所有節點中的資料是一樣的。同一時間點,你在節點a中獲取到key1的值與在節點b中獲取到key1的值應該都是一樣的 弱一致性 相當於非同步 系統並不保證續程序或者執行緒的訪問都會返回最新的更新過的值。系統在資料寫入成功之後,不承諾立即可以讀到最新寫入的值,也不會具體的承諾...

修復SQLSERVER 資料庫一致性錯誤與分配錯誤

一 把資料庫置為單使用者模式 sp dboption 資料庫名稱 single user true 二 在允許資料丟失情況下修復資料庫 dbcc checkdb 資料庫名稱 repair allow data loss 如果執行一次不行,可以在多執行幾次直到沒有再提示資料庫有錯誤為止。三 把資料庫重...