mssql2000 Log.LDF日誌(zhì)文件丟失的解決方案
由(yóu)於種種原(yuán)因,我們如果當時僅僅備份了(le)mdf文(wén)件,而無法(fǎ)得到日誌文件,那麽(me)恢複起(qǐ)來就是一件很麻煩的事情了。
【同(tóng)一數據庫服務器的情況】
如果您的mdf文件是當前數據庫產生的,那麽很僥幸,也許你使用sp_attach_db或者sp_attach_single_file_db可以恢複數據庫,但是會出現類似下麵的提示信息
設備(bèi)激(jī)活錯誤。物理(lǐ)文件(jiàn)名 'C:\Program Files\Microsoft sql server\MSSQL\data\test_Log.LDF' 可能有誤。
已創建名為 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日誌文件。
【不同數據庫服務器的情況】
如果您的數據庫文件是從其他計算機上複製過來的,那麽很不幸,也(yě)許上(shàng)述辦(bàn)法就行不通了。你也許會得到類似(sì)下麵的錯誤信息
服務器: 消息 1813,級別 16,狀態 2,行 1
未能打開新(xīn)數據庫 'test'。CREATE DATABASE 將終止。
設備激活錯誤。物理文件名 'd:\test_log.LDF' 可能(néng)有誤。
怎麽辦呢?別著急(jí),下麵我們舉(jǔ)例說明(míng)恢複辦法。
A.使用默認方式建立(lì)一個供恢複使用的數(shù)據庫(test)。
B.停掉數(shù)據庫服務器。
C.將剛才生成的數(shù)據庫的日誌文件test_log.ldf刪除,用要恢複的(de)數據庫(kù)mdf文件覆蓋剛才生成(chéng)的數據庫數據文(wén)件test_data.mdf。
D.啟動數據庫服務器(qì)。此時會看到數據庫test的狀態為“置疑”。這時候不能對此數據庫進行(háng)任何操作。
E.設置數據庫允許直接操作係統表。此操作可以(yǐ)在SQL Server Enterprise Manager裏麵選擇數據庫(kù)服務器,按右鍵(jiàn),選擇“屬性”,在“服務器設置”頁麵中將“允許對係(xì)統目錄直(zhí)接修改”一項選中。
F.設置test為緊急(jí)修複模式
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此時可以在SQL Server Enterprise Manager裏(lǐ)麵看到該數據庫處於“隻讀\置疑\脫機\緊急模式”可以看到數據庫裏麵的表(biǎo),但是僅僅有係統表。
G.下麵執行真正的恢複操作,重建數據庫日誌文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
執行過程中(zhōng),如果遇到下列提示信(xìn)息:
服務器: 消息(xī) 5030,級別 16,狀(zhuàng)態 1,行 1
未能排它地鎖定數據庫以執行(háng)該操作。
DBCC 執行完畢。如果 DBCC 輸出了錯誤(wù)信息,請與係統管理員聯係。
說明您的其他程序正在使用該數據庫(kù),如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了test庫的係(xì)統表,那麽退出SQL Server Enterprise Manager就可以了。
正確(què)執行完成的提示應該(gāi)類似於:
警告: 數據庫 'test' 的日誌已重建。已失去事務的(de)一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必(bì)須重置(zhì)數據庫選項(xiàng),並且(qiě)可能需要刪除多餘的(de)日誌文件。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與係統管理員聯係(xì)。
此時打開在SQL Server Enterprise Manager裏麵(miàn)會看到(dào)數據(jù)庫的狀態為“隻供DBO使用”。此時可以訪問數據庫裏麵的用戶表了。
H.驗證數(shù)據庫一致性(可省略)
dbcc checkdb('test')
一般執行結果如下:
CHECKDB 發現(xiàn)了 0 個分配錯誤和 0 個一致性錯誤(wù)(在數據庫 'test' 中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤(wù)信(xìn)息(xī),請與係統管理員聯係。
I.設(shè)置數(shù)據庫為正常狀態
sp_dboption 'test','dbo use only','false'
如果沒有出錯,那麽(me)恭喜(xǐ),現在就(jiù)可以正常的使用恢(huī)複後的數據庫啦。
J.最後(hòu)一步,我們要將步驟E中設置的“允許對係統目錄直接(jiē)修改”一項恢複。因為平時直接(jiē)操作係統表(biǎo)是一件比較危險的事情。當然(rán),我們可以(yǐ)在SQL Server Enterprise Manager裏麵恢複,也可以使用(yòng)如下語句完(wán)成
-SQL
sp_configure 'allow updates',0
go
reconfigure with override
go
關鍵詞:mssql2000,解(jiě)決方案
閱讀本文後您(nín)有什麽感想? 已有 人給出(chū)評價!
- 1
- 1
- 1
- 1
- 1
- 1