今天很不巧,早上上班一開機剛剛啟動到快輸入密碼時就停了電。下午來電後開機一看,居然SQL Sever啟動不了。查看資料庫日誌出現以下錯誤:
錯誤: 9003,嚴重度: 20,狀態: 1
The LSN (6:222:1) passed to log scan in database 'model' is invalid.
錯誤: 9003,嚴重度: 20,狀態: 1
LSN (6:222:1) 無效。該 LSN 是傳遞給資料庫 'model' 中的日誌掃描操作的。
查看線上說明,無果。重裝資料庫,反正是自己機器上的資料都無關緊要。還好伺服器一切正常,需要資料從伺服器上匯入即可。不過為了省去重裝的麻煩還是先上網搜尋了一下。嘗試修複錯誤,總比動不動重裝要有所提高。
上網搜尋結果如下:
應該是資料檔案或者記錄檔損壞了。
1)設定資料庫為緊急模式
停掉SQL Server服務;
把應用程式資料庫的資料檔案XXX_Data.mdf移走;
重建立立一個同名的資料庫XXX;
停掉SQL服務;
把原來的資料檔案再覆蓋回來;
運行以下語句,把該資料庫設定為緊急模式;
運行“Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go”
執行結果:
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。
已將配置選項 'allow updates' 從 0 改為 1。請運行 RECONFIGURE 語句以安裝。
接著運行“update sysdatabases set status = 32768 where name = 'XXX'”
重啟SQL Server服務;
運行以下語句,把應用程式資料庫設定為Single User模式;
運行“sp_dboption 'XXX', 'single user', 'true'”
執行結果:
命令已成功完成。
做DBCC CHECKDB;
運行“DBCC CHECKDB('XXX')”
運行以下語句把系統資料表的修改選項關掉;
運行“sp_resetstatus "XXX"
go
sp_configure 'allow updates', 0
reconfigure with override
重建立立另外一個資料庫XXX.Lost;
2)DTS匯出嚮導
運行DTS匯出嚮導;
這樣,XXX.Lost資料庫就可以替換原來的應用程式資料庫了。
看了文章發現要修複還是挺複雜的,重新看日誌,發現問題是出在model資料庫。我想我不如把我的另外一個資料庫執行個體中的model資料庫直接Copy過來不就行了,反正model資料庫用作在系統上建立的所有資料庫的模板。應該執行個體中的model資料庫和要恢複的差不多吧。後來把執行個體資料庫中的model.mdf覆蓋過來,重啟資料庫服務。居然好了,用了一陣也一切正常。OK!問題解決了。
心得:看來以後遇到系統問題不能總走重裝的老路,這樣對自己才有提高。