萬華數(shù)據(jù) 國(guó)內(nèi)一些ERP、財(cái)務(wù)軟件一般后臺(tái)都使用SQL Server的數(shù)據(jù)庫,SQL Server作為一個(gè)中大型數(shù)據(jù)庫是不應(yīng)該在桌面系統(tǒng)上運(yùn)行的,小規(guī)模企業(yè)一般不使用專用服務(wù)器,大部分直接使用XP系統(tǒng)+桌面引擎MSDE作為SQL數(shù)據(jù)庫的后臺(tái)服務(wù)。這種方案當(dāng)然就談不上什么穩(wěn)定性和可靠性了,最糟的是在死機(jī)、重啟或意外掉電后數(shù)據(jù)庫會(huì)出現(xiàn)打不開的現(xiàn)象,其中錯(cuò)誤9003:LSN(xx:xx:x)無效是最常見的問題。 這種情況是數(shù)據(jù)庫的日志文件(LDF)數(shù)據(jù)不同步造成的,可以根據(jù)數(shù)據(jù)庫MDF文件重建日志文件修復(fù)。 以下是詳細(xì)步驟,有顏色標(biāo)注的部分應(yīng)該按本機(jī)的實(shí)際名稱進(jìn)行修改。 假設(shè)損壞的數(shù)據(jù)庫名稱是MYDB_001,對(duì)應(yīng)的數(shù)據(jù)庫名稱是MyDB_Data.MDF,日志文件是MyDB_Log.LDF,數(shù)據(jù)庫所在文件夾為D:\MYDATA\; 1、先把損壞的數(shù)據(jù)庫對(duì)應(yīng)的文件MyDB_Data.MDF和MyDB_Log.LDF備份到別的地方; 2、在SQL Server和企業(yè)管理器中創(chuàng)建一個(gè)與損壞數(shù)據(jù)庫同名的數(shù)據(jù)庫,對(duì)應(yīng)的數(shù)據(jù)庫文件名稱也是MyDB_Data.MDF和MyDB_Log.LDF; 3、停止SQL Server服務(wù); 4、刪除第2步新建數(shù)據(jù)庫產(chǎn)生的MyDB_Log.LDF文件; 5、用損壞的數(shù)據(jù)庫數(shù)據(jù)文件MyDB_Data.MDF覆蓋第2步新建數(shù)據(jù)庫產(chǎn)生的MyDB_Data.MDF文件 6、啟動(dòng)SQL Server服務(wù); 7、進(jìn)入企業(yè)管理器,刷新數(shù)據(jù)庫狀態(tài),此時(shí)數(shù)據(jù)庫MYDB_001狀態(tài)為“置疑”; 8、在SQL Server服務(wù)器屬性中設(shè)置SQL Server數(shù)據(jù)庫服務(wù)器“允許對(duì)系統(tǒng)目錄直接修改” 9、從SQL企業(yè)管理器的“工具”菜單啟動(dòng)“SQL 查詢分析器”; 10、輸入以下代碼并運(yùn)行使MYDB_001數(shù)據(jù)庫進(jìn)入緊急修復(fù)模式: update sysdatabases set status=-32768 where dbid=DB_ID('MYDB_001') 這句語句執(zhí)行后,刷新企業(yè)管理器,MYDB_001數(shù)據(jù)庫的狀態(tài)變成“只讀\置疑\脫機(jī)\緊急模式”。 11、輸入以下語句并執(zhí)行重建日志文件; dbcc rebuild_log('MYDB_001','D:\MYDATA\MyDB_Log.LDF') 這句語句執(zhí)行后,刷新企業(yè)管理器,MYDB_001數(shù)據(jù)庫的狀態(tài)變成“只供DBO使用”。 12、輸入并執(zhí)行正面的語句設(shè)置數(shù)據(jù)庫MYDB_001到正常狀態(tài); exec sp_dboption 'MYDB_001','dbo use only','false' 這句語句執(zhí)行后,刷新企業(yè)管理器,MYDB_001數(shù)據(jù)庫變成正常狀態(tài)。 到此,MYDB_001數(shù)據(jù)庫修復(fù)成功。最后不要忘記關(guān)閉第8步中打開的“允許對(duì)系統(tǒng)目錄直接進(jìn)行修改”服務(wù)器開關(guān)。 |
|