2005中遇到置疑、丟失日志時按照網上常見的MSSQL2000修復方法來做,
結果發現行不通,甚至連一步都做不下去。其實,在MSSQL2005在處理置疑問題的思
路與MSSQL2000是一致的,但具體到一些語句上MSSQL2005 有了很大的變動。我們以
一個被誤刪日志文件的數據庫為例:
1.MSSQL2000在日志被誤刪除后會提示置疑(suspect),而在MSSQL2005中卻沒有特
殊標志,但圖標前的”+”不見了當你查詢數據庫屬性時會有Error:945提示:
2.順着老思路,首先我們想到先進入緊急模式:
MSSQL2000進入緊急模式:
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
update sysdatabases set status = 32768 where name = 'dbname'
MSSQL2005進入緊急模式的方法簡單了
alter database dbname set emergency
3.重建日志文件
MSSQL2000使用DBCC REBUILD_LOG。
在MSSQL2005中沒有了DBCC REBUILD_LOG
可MSSQL2005中是使用dbcc checkdb('dbname',REPAIR_ALLOW_DATA_LOSS)。
當然要想使用dbcc checkdb我們得進入單用戶模式:
sp_dboption 'dbname', 'single user','true'
或
alter database dbname set single_user(推薦使用后者)
4.再運行dbcc checkdb看看是否有損壞的頁
5.恢復多用戶模式
sp_dboption 'dbname', 'single user','false'
或
alter database dbname set multi_user(推薦使用后者)
6.恢復非緊急模式
alter database dbname set online
總結:
2005數據庫當出現置疑時,可以通過以下語句來解決:
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
alter database dbname set emergency
go
alter database dbname set single_user
go
dbcc checkdb('dbname',REPAIR_ALLOW_DATA_LOSS)
go
alter database dbname set multi_user
go
alter database dbname set online
go