mssqlserver恢復(fù)ldf文件數(shù)據(jù)的方法
更新時(shí)間:2013年11月05日 15:48:27 作者:
本文介紹mssqlserver怎么恢復(fù)ldf文件數(shù)據(jù)庫(kù),簡(jiǎn)單的來(lái)說(shuō),MDF文件是SQL server用來(lái)存放數(shù)據(jù)的數(shù)據(jù)庫(kù)文件;LDF文件SQL server是日志文件,存放了對(duì)數(shù)據(jù)庫(kù)進(jìn)行的所有操作信息
我們重要的數(shù)據(jù)是存放在MDF文件中的,如果LDF文件丟失,MDF文件沒(méi)有丟失,那么數(shù)據(jù)也可以還原。如果LDF文件沒(méi)有丟失,MDF文件丟失,且LDF文件是完整的,也是可以提供一定手段還原數(shù)據(jù)。
現(xiàn)象描述
我們現(xiàn)在要面對(duì)的問(wèn)題是,針對(duì)wtlog_2008_m12這個(gè)數(shù)據(jù)庫(kù),只有MDF文件而LDF文件丟失了,SQL Server Management Studio中也沒(méi)有這個(gè)數(shù)據(jù)庫(kù),附加上也會(huì)提示錯(cuò)誤。
解決方法
(1)在SQL Server Management Studio刪除狀態(tài)為Recovery Pending的(即丟失了LDF的)問(wèn)題數(shù)據(jù)庫(kù)(如果有的話,應(yīng)該是在數(shù)據(jù)庫(kù)管理中沒(méi)有的)
(2)重命名老的MDF文件. 比如改為wtlog_2008_m12_bak.mdf
(3) 重建一個(gè)新的數(shù)據(jù)庫(kù), 名字跟丟失的數(shù)據(jù)庫(kù)完全一樣,比如為wtlog_2008_m12,LDF文件的名字如果為wtlog_2008_m12的話,數(shù)據(jù)庫(kù)提示報(bào)錯(cuò),說(shuō)邏輯名字已存在,但文件怎么也找不到,此處的LDF的文件命名為wtlog_2008_m12_log。 注意, 新的MDF的位置跟我們老的MDF的文件的位置相同. 這里的LDF文件的位置選在你想要存放的最終位置上(這個(gè)就是你所要的被恢復(fù)的LDF文件了).
(4)關(guān)閉SQL Server服務(wù),將新的MDF(wtlog_2008_m12.mdf)重命名掉(比如改為wtlog_2008_m12___.mdf), 老的MDF(wtlog_2008_m12_bak.mdf)命名回原來(lái)的名字(wtlog_2008_m12.mdf).
(5)開(kāi)啟SQL Server服務(wù),連接數(shù)據(jù)庫(kù),執(zhí)行下面語(yǔ)句,如果報(bào)錯(cuò)的話,請(qǐng)查看是否連接上數(shù)據(jù)庫(kù),或者有其他進(jìn)程連著數(shù)據(jù)庫(kù)。
alter database wtlog_2008_m12 set emergency
alter database wtlog_2008_m12 set single_user with rollback immediate
alter database wtlog_2008_m12 rebuild log on (name=wtlog_2008_m12, filename='D:/watcher/database/wtlog_2008_m12.ldf')
alter database wtlog_2008_m12 SET MULTI_USER with rollback immediate
(6)此時(shí),mdf和ldf的名字都為wtlog_2008_m12,刪除多余的mdf文件即可。
現(xiàn)象描述
我們現(xiàn)在要面對(duì)的問(wèn)題是,針對(duì)wtlog_2008_m12這個(gè)數(shù)據(jù)庫(kù),只有MDF文件而LDF文件丟失了,SQL Server Management Studio中也沒(méi)有這個(gè)數(shù)據(jù)庫(kù),附加上也會(huì)提示錯(cuò)誤。
解決方法
(1)在SQL Server Management Studio刪除狀態(tài)為Recovery Pending的(即丟失了LDF的)問(wèn)題數(shù)據(jù)庫(kù)(如果有的話,應(yīng)該是在數(shù)據(jù)庫(kù)管理中沒(méi)有的)
(2)重命名老的MDF文件. 比如改為wtlog_2008_m12_bak.mdf
(3) 重建一個(gè)新的數(shù)據(jù)庫(kù), 名字跟丟失的數(shù)據(jù)庫(kù)完全一樣,比如為wtlog_2008_m12,LDF文件的名字如果為wtlog_2008_m12的話,數(shù)據(jù)庫(kù)提示報(bào)錯(cuò),說(shuō)邏輯名字已存在,但文件怎么也找不到,此處的LDF的文件命名為wtlog_2008_m12_log。 注意, 新的MDF的位置跟我們老的MDF的文件的位置相同. 這里的LDF文件的位置選在你想要存放的最終位置上(這個(gè)就是你所要的被恢復(fù)的LDF文件了).
(4)關(guān)閉SQL Server服務(wù),將新的MDF(wtlog_2008_m12.mdf)重命名掉(比如改為wtlog_2008_m12___.mdf), 老的MDF(wtlog_2008_m12_bak.mdf)命名回原來(lái)的名字(wtlog_2008_m12.mdf).
(5)開(kāi)啟SQL Server服務(wù),連接數(shù)據(jù)庫(kù),執(zhí)行下面語(yǔ)句,如果報(bào)錯(cuò)的話,請(qǐng)查看是否連接上數(shù)據(jù)庫(kù),或者有其他進(jìn)程連著數(shù)據(jù)庫(kù)。
復(fù)制代碼 代碼如下:
alter database wtlog_2008_m12 set emergency
alter database wtlog_2008_m12 set single_user with rollback immediate
alter database wtlog_2008_m12 rebuild log on (name=wtlog_2008_m12, filename='D:/watcher/database/wtlog_2008_m12.ldf')
alter database wtlog_2008_m12 SET MULTI_USER with rollback immediate
(6)此時(shí),mdf和ldf的名字都為wtlog_2008_m12,刪除多余的mdf文件即可。
相關(guān)文章
自己收集比較強(qiáng)大的分頁(yè)存儲(chǔ)過(guò)程 推薦
這兩天幫朋友修改一個(gè)項(xiàng)目,看到一個(gè)存儲(chǔ)過(guò)程,感覺(jué)性能非常高。于是,整合自己以前搜集的比較好的存儲(chǔ)過(guò)程,拿來(lái)跟大家分享下2011-11-11
SQL對(duì)時(shí)間處理的語(yǔ)句小結(jié)
做項(xiàng)目時(shí)經(jīng)常要對(duì)數(shù)據(jù)庫(kù)中存儲(chǔ)的時(shí)間做一些處理后再操作,于是自己總結(jié)了一些2011-11-11
insert select與select into 的用法使用說(shuō)明
將一個(gè)table1的數(shù)據(jù)的部分字段復(fù)制到table2中,或者將整個(gè)table1復(fù)制到table2中,這時(shí)候我們就要使用SELECT INTO 和 INSERT INTO SELECT 表復(fù)制語(yǔ)句了2011-12-12
SQL?Server?內(nèi)存占用高分析及問(wèn)題解決辦法
文章詳細(xì)分析了SQL?Server內(nèi)存占用高的問(wèn)題,包括數(shù)據(jù)緩存和執(zhí)行命令緩存的機(jī)制,并提供了解決辦法,如清除緩存、設(shè)置內(nèi)存最大占用值等,感興趣的朋友跟隨小編一起看看吧2025-01-01
SQL2000個(gè)人版 應(yīng)用程序正常初始化失敗0乘以C0000135失敗
應(yīng)用程序正常初始化(0*c0000135)失敗。是什么意思?2011-01-01
與 SQL Server 建立連接時(shí)出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實(shí)例的錯(cuò)誤
與 SQL Server 建立連接時(shí)出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實(shí)例的錯(cuò)誤,未找到或無(wú)法訪問(wèn)服務(wù)器,請(qǐng)驗(yàn)證實(shí)例名稱是否正確并且 SQL Server 已配置為允許遠(yuǎn)程連接2024-04-04

