今天百拓客服在檢測(cè)客戶網(wǎng)站時(shí)發(fā)現(xiàn)其中一個(gè)客戶的SQL Server2005數(shù)據(jù)表顯示為異常,在網(wǎng)上查詢了很多方案均未修復(fù),例如:
--設(shè)置數(shù)據(jù)庫(kù)緊急狀態(tài)
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
--設(shè)置數(shù)據(jù)庫(kù)為緊急模式
update sysdatabases set status=-32768 where dbid=DB_ID('Procurement')
--重建數(shù)據(jù)庫(kù)日志文件
dbcc rebuild_log('Procurement','D:\Procurement_log.ldf')
--驗(yàn)證數(shù)據(jù)庫(kù)一致性(可省略)
dbcc checkdb('Procurement')
--設(shè)置數(shù)據(jù)庫(kù)為正常狀態(tài)
sp_dboption 'Procurement','dbo use only','false'
--*后一步,我們要將步驟E中設(shè)置的“允許對(duì)系統(tǒng)目錄直接修改”一項(xiàng)恢復(fù)
sp_configure 'allow updates',0
go
reconfigure with override
go
結(jié)果發(fā)現(xiàn),無(wú)效。以上方案只使用于SQL Server2000。經(jīng)過(guò)我們一個(gè)上午的研究和測(cè)試測(cè)出終極解決方案,只需要在數(shù)據(jù)庫(kù)查詢中執(zhí)行以下4行代碼即可完美解決:
ALTER DATABASE 你的數(shù)據(jù)庫(kù)名 SET EMERGRNCY
ALTER DATABASE 你的數(shù)據(jù)庫(kù)名 SET SINGLE_USER
DBCC CheckDB (你的數(shù)據(jù)庫(kù)名,REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE 你的數(shù)據(jù)庫(kù)名 SET MULTI_USER