標籤:
use test go ALTER DATABASE test SET SINGLE_USER DBCC CHECKDB (test, repair_allow_data_loss) with NO_INFOMSGS go ALTER DATABASE test SET MULTI_USER go
對於單個資料庫報錯了,運行這個修複不行。後來我在tempdb運行才可以。
dbcc checkdb(‘tempdb‘)
其實開始的時候還有另一個錯誤:
嘗試在資料庫 5 中提取邏輯頁 (1:1640) 失敗。該邏輯頁屬於配置單位XXX ,而非 XXX。
use master declare @databasename varchar(255) set @databasename=‘需要修複的資料庫實體的名稱‘ exec sp_dboption @databasename, N‘single‘, N‘true‘ --將目標資料庫置為單使用者狀態 dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N‘single‘, N‘false‘--將目標資料庫置為多使用者狀態
這個沒有效果,運行到一半就出錯了,無計可施。無奈之下用truncate table test,然後從新插入資料。當然做這個的前提是你的資料有備份。否則從損壞的表是讀不到的。
這個表修複的方法也沒啥用。
use 需要修複的資料庫實體的名稱 declare @dbname varchar(255) set @dbname=‘需要修複的資料庫的名稱‘ exec sp_dboption @dbname,‘single user‘,‘true‘ dbcc checktable(‘需要修複的資料表的名稱‘,REPAIR_ALLOW_DATA_LOSS) dbcc checktable(‘需要修複的資料表的名稱‘,REPAIR_REBUILD) ------把’ 需要修複的資料表的名稱’更改為執行DBCC CHECKDB時報錯的資料表的名稱 exec sp_dboption @dbname,‘single user‘,‘false‘
DBCC DBREINDEX (表名,’’) 修複此表所有的索引。這個方法也沒用。
DBCC CHECKALLOC
檢查指定資料庫的磁碟空間分配結構的一致性 。這個我水平不夠,看不出什麼問題。
資料庫越大,修複越久。還是做好隨時備份。
本人系統win10+sql2008,在裝sql2008的時候系統就提示不相容,但是可以安裝成功並且運行,不清楚是什麼原因導致的。希望有高手可以解答。以前在win7沒有遇見過這種問題。
SQL Server 檢測到基於一致性的邏輯 I/O 錯誤 校正和不正確 ||嘗試在資料庫 5 中提取邏輯頁 (1:1640) 失敗