1. 只有mdf和ldf文件,甚至只有mdf文件,如何恢復資料庫求答案
1. 首先確認已經備份了.mdf和.ldf文件。
2. 在sql Server中新建一個同名的資料庫,然後停止SQL Server服務。
3. 用原有的.mdf和.ldf文件覆蓋新建資料庫對應的.mdf和.ldf文件。
4. 重新啟動SQL Server服務,這是應該會看到這個資料庫處於置疑(Suspect)狀態。(人品好的話,這個時候資料庫就已經恢復正常了,上次xrf的資料庫就是這樣被我恢復的。人品不好的話,下面的步驟也不行,我有一次就是找了一個北京做數據恢復的公司才恢復完畢。)
5. 在SQL查詢分析器中執行以下命令,以允許更新系統表:use mastergosp_configure 『allow updates』,1
reconfigure with overridego
6. 將這個資料庫置為緊急模式:
update sysdatabases set status = 32768 where name = 'db_name'go
7. 使用DBCC CHECKDB命令檢查資料庫中的錯誤:
DBCC CHECKDB(『db_name』)GO
8. 如果DBCC CHECKDB命令失敗,請轉至第10步,否則先將資料庫置為單用戶模式,再嘗試對其進行修復:
sp_dboption 'db_name',』single user』,』true』
DBCC CHECKDB(『db_name』, REPAIR_ALLOW_DATA_LOSS)GO如果在執行DBCC CHECKDB(『db_name』, REPAIR_ALLOW_DATA_LOSS)命令時提示說資料庫未處於單用戶模式狀態的話,則重新啟動SQL Server服務,然後繼續嘗試。
9. 如果DBCC CHECKDB(『db_name』, REPAIR_ALLOW_DATA_LOSS)命令失敗,請轉至第10步,否則若成功修復了資料庫中的錯誤:
重新執行DBCC CHECKDB(『db_name』)命令,確認資料庫中已沒有錯誤存在。
清除資料庫的置疑狀態:sp_resetstatus 'db_name'
清除資料庫的單用戶模式狀態:sp_dboption 'db_name',』single user』,』false』
重新啟動SQL Server服務,如果一切正常的話,則資料庫已經成功恢復。
10. 如果以上步驟都不能解決問題的話,請參考附件中的文檔嘗試通過重建事務日誌來恢復資料庫中的數據。
如果您只有MDF文件,問題就更加復雜一些,我們需要直接重建事務日誌了:
1. 在SQL Server中新建一個同名的資料庫,然後停止SQL Server服務。
2. 用原有的ldf文件覆蓋新建資料庫對應的.mdf文件,將其日誌文件(.ldf)刪除。
3. 啟動SQL Server服務,並將資料庫置為緊急模式(同上: 步驟5和步驟6)。
4. 停止並重新啟動SQL Server服務。
5. 執行以下命令重建資料庫日誌文件:(下面是個示例,您要用您實際的資料庫名)
DBCC REBUILD_LOG(』cas_db』, 'D:\cas_db\cas_db_Log.LDF')
6. 重新將該資料庫置為單用戶模式。
2. 只有mdf文件,怎麼恢復SQLSERVER資料庫
1、開啟資料庫
2、從企業管理器,建一個同名的資料庫
3、停止sql server
4、用原mdf文件覆蓋新建庫的資料庫文件
5、重啟sql server(這時資料庫應該是置疑)
6、修改伺服器設置:允許對系統目錄進行直接修改
sp_configure 'allow updates',1 reconfigure with override
7、將資料庫置為緊急狀態:
update master.dbo.sysdatabases set status = 32768 where name = '資料庫名'
8、刪除新的ldf文件,重建日誌:
dbcc rebuild_log('資料庫名', 'f:\資料庫名_log_new.ldf')--假設把新日誌在f盤
9、update master.dbo.sysdatabases set status = 16 where name = '資料庫名'
10、修改伺服器設置:取消 允許對系統目錄進行直接修改
sp_configure 'allow updates', 0 reconfigure with override
11、再使用檢查工具修復錯誤
use [資料庫名]
alter database [資料庫名] set single_user with rollback immediate
dbcc checkdb ('資料庫名',REPAIR_ALLOW_DATA_LOSS)
alter database [資料庫名] set multi_user
執行完畢之後,如果還有錯誤,重復執行11,直到沒有錯誤為止。
3. 如何恢復和修復MS SQL資料庫的MDF文件[2]
怎麼辦呢?別著急 下面我們舉例說明恢復辦法
A 我們使用默認方式建立一個供恢復使用的資料庫(如test) 可以在SQL Server Enterprise Manager裡面建立
B 停掉資料庫伺服器
C 將剛才生成的數悶談仿據庫的日誌文件test_log ldf刪除 用要恢復的資料庫mdf文件覆蓋剛才生成的資料庫數據文件test_data mdf
D 啟動資料庫伺服器 此時會看到資料庫test的狀態為 置疑 這時候不能對此資料庫進行任何操作
E 設置資料庫允許直接
操作系統表 此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器 按右鍵 選擇 屬性 在 伺服器設置 頁面中將螞纖 允許對系統目錄直接修改 一項選中 也可以使用如下語句來實現
以下是引用片段 usemaster go sp_configure allowupdates go reconfigurewithoverride go
F 設置test為緊急修復模式
update sysdatabases set status= where dbid=DB_ID( test )
此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於 只讀置疑離線緊急模式 可以看到資料庫裡面的表 但是僅僅有系統表
G 下面執行真正的恢復操作 重建資料庫日誌文件
dbcc rebuild_log( test C:Program FilesMicrosoft SQL ServerMSSQLData est_log ldf )
執行過程中 如果遇到下列提示信息
伺服器: 消息 級別 狀態 行
未能排它地鎖定資料庫以執行該操作
DBCC 執行完畢 如果 DBCC 輸出了錯誤信息 請與系統管理員聯系
說明您的其他程序正在使用該資料庫 如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了test庫的系統表 那麼退出SQL Server Enterprise Manager就可以了
正確執行完成的提示應該類似於
警告: 資料庫 test 的日誌已重建 已失去事務的一致性 應運行 DBCC CHECKDB 以驗證物理一致性 將必須重置資料庫選項 並且可能需要刪除多餘的日誌文件
DBCC 執行完畢 如果 DBCC 輸出了錯誤信息 請與系統管理員聯系
此時打開在SQL Server Enterprise Manager裡面會看到資料庫的狀態為 只供DBO使用 此時可以訪問資料庫裡面的用戶表了
H 驗證資料庫一致性(可省略)
dbcc checkdb( test )
一般執行結果如下
CHECKDB 發現了 個分配錯誤和 個一致性錯誤(在資料庫 test 中)
DBCC 執行完畢 如果 DBCC 輸出了錯誤信息 請與系統管理員聯系
I 設置資料庫為正常狀態
sp_dboption test dbo use only false
侍拍如果沒有出錯 那麼恭喜 現在就可以正常的使用恢復後的資料庫啦
J 最後一步 我們要將步驟E中設置的 允許對系統目錄直接修改 一項恢復 因為平時直接操作系統表是一件比較危險的事情 當然 我們可以在SQL Server Enterprise Manager裡面恢復 也可以使用如下語句完成
以下是引用片段 sp_configure allowupdates go reconfigurewithoverride go
lishixin/Article/program/SQL/201311/16354