失而復(fù)得——數(shù)據(jù)庫日志文件丟失后的恢復(fù)
前幾天聽英語用到虛擬光驅(qū)裝resseta stone,沒想到各種不順,把我的本本給整癱瘓了。后來重整旗鼓,裝了云端,總算是把它搞定了,由于癱瘓來的很突然,所以我的一些數(shù)據(jù)不小心丟了一些。我新建的數(shù)據(jù)庫日志文件就悲催的丟啦。其實新建一個數(shù)據(jù)庫完全可以,只是覺得現(xiàn)在碰到了,而且也不是沒有時間,可以查找一下解決方案,以備以后自己和他人遇到一些類似的情況不必再犯難。
下面來說一下恢復(fù)方法:
如果你的數(shù)據(jù)還在數(shù)據(jù)庫服務(wù)器中,請執(zhí)行以下三步
1、停止數(shù)據(jù)庫服務(wù)。
2、將需要恢復(fù)的數(shù)據(jù)庫文件復(fù)制到另外的位置,然后在SQL Server Management Studio中刪除要恢復(fù)的數(shù)據(jù)庫。
3、啟動數(shù)據(jù)庫服務(wù)。
接下來
1、新建同名的數(shù)據(jù)庫(數(shù)據(jù)庫文件名也要相同)。
2、停止數(shù)據(jù)庫服務(wù)。
3、用備份的.mdf文件覆蓋新數(shù)據(jù)庫的同名文件。
4、啟動數(shù)據(jù)庫服務(wù)。
5、在查詢分析器中:運行如下代碼將數(shù)據(jù)庫設(shè)置為緊急狀態(tài)
alter database dbname set emergency |
例如恢復(fù)的數(shù)據(jù)庫名為:MRcharge,圖如下
6、然后再查詢中輸入如下語句就可以恢復(fù)數(shù)據(jù)庫了:
use master declare @databasename varchar(255) set @databasename='MRcharge' exec sp_dboption @databasename, N'single', N'true' --將恢復(fù)數(shù)據(jù)庫置為單用戶狀態(tài) dbcc checkdb('MRcharge',REPAIR_ALLOW_DATA_LOSS) dbcc checkdb('MRcharge',REPAIR_REBUILD) exec sp_dboption 'MRcharge', N'single', N'false' --最后再將恢復(fù)數(shù)據(jù)庫置為多用戶狀態(tài) |
注意:這種方法恢復(fù)必須保證你建立數(shù)據(jù)庫和恢復(fù)數(shù)據(jù)庫用的是統(tǒng)一版本,即:都是sql server 2000,或者 2005,或者2008。
我曾想用sql server 2008恢復(fù)2005的數(shù)據(jù)庫,結(jié)果提示版本過低,無法打開,需要升級,于是我在建數(shù)據(jù)庫的時候特意把兼容級別改成2005的,結(jié)果還是一樣。
跨版本恢復(fù)待求解,請指點。
posted on 2012-08-22 11:34 順其自然EVO 閱讀(253) 評論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫