首先確認已經備份了mdf和ldf文件
在SQL Server中新建一個同名的數據庫然後停止SQL Server服務
用原有的mdf和ldf文件覆蓋新建數據庫對應的mdf和ldf文件
重新啟動SQL Server服務這是應該會看到這個數據庫處於置疑(Suspect)狀態
在SQL查詢分析器中執行以下命令以允許更新系統表
use mastergosp_configure allow updatesreconfigure with overridego
將這個數據庫置為緊急模式
update sysdatabases set status = where name = db_namego
使用DBCC CHECKDB命令檢查數據庫中的錯誤
DBCC CHECKDB(db_name)GO
如果DBCC CHECKDB命令失敗請轉至第步否則先將數據庫置為單用戶模式再嘗試對其進行修復
sp_dboption db_namesingle usertrueDBCC CHECKDB(db_name REPAIR_ALLOW_DATA_LOSS)GO
如果在執行DBCC CHECKDB(db_name REPAIR_ALLOW_DATA_LOSS)命令時提示說數據庫未處於單用戶模式狀態的話則重新啟動SQL Server服務然後繼續嘗試
如果DBCC CHECKDB(db_name REPAIR_ALLOW_DATA_LOSS)命令失敗請轉至第步否則若成功修復了數據庫中的錯誤
重新執行DBCC CHECKDB(db_name)命令確認數據庫中已沒有錯誤存在
清除數據庫的置疑狀態sp_resetstatus db_name
清除數據庫的單用戶模式狀態sp_dboption db_namesingle userfalse
重新啟動SQL Server服務如果一切正常的話則數據庫已經成功恢復
如果以上步驟都不能解決問題的話請參考附件中的文檔嘗試通過重建事務日志來恢復數據庫中的數據如果您只有MDF文件問題就更加復雜一些我們需要直接重建事務日志了:
在SQL Server中新建一個同名的數據庫然後停止SQL Server服務
用原有的ldf文件覆蓋新建數據庫對應的mdf文件將其日志文件(ldf)刪除
啟動SQL Server服務並將數據庫置為緊急模式(同上: 步驟和步驟)
停止並重新啟動SQL Server服務
執行以下命令重建數據庫日志文件(下面是個示例您要用您實際的數據庫名)
DBCC REBUILD_LOG(cas_db D:\cas_db\cas_db_LogLDF)
重新將該數據庫置為單用戶模式
再次嘗試使用DBCC CHECKTABLE或DBCC CHECKDB命令檢查並修復數據庫中的錯誤
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22174.html