SQL Server置疑的產(chǎn)生原因與解決
文章主要描述的是sql數(shù)據(jù)庫(kù)置疑之SQL Server置疑的正確解決,以及對(duì)SQL Server置疑的產(chǎn)生原因,以及對(duì)其在實(shí)際操作中出現(xiàn)的一些錯(cuò)誤現(xiàn)象的具體描述,以下就是文章的主要內(nèi)容的詳細(xì)解析。
辦法
原因:
通常這個(gè)問(wèn)題是由于硬盤空間不夠或硬盤讀寫錯(cuò)誤造成的。
現(xiàn)象:
數(shù)據(jù)庫(kù)后面有“SQL Server置疑”字樣,查看系統(tǒng)事務(wù)日記出現(xiàn)以下錯(cuò)誤:
錯(cuò)誤1---------------------------------------------
錯(cuò)誤: 823,嚴(yán)重度: 24,狀態(tài): 2
I/O error 23(數(shù)據(jù)錯(cuò)誤 (循環(huán)冗余檢查)。) detected during read at offset 0x00000000200000 in file
'C:\Program Files\Microsoft SQL Server\MSSQL\Data\Jiapei_Data.MDF'.
錯(cuò)誤2---------------------------------------------
錯(cuò)誤: 3313,嚴(yán)重度: 21,狀態(tài): 2
恢復(fù)數(shù)據(jù)庫(kù) 'Jiapei' 的日志中記錄的操作時(shí)出錯(cuò)。出錯(cuò)位置在日志記錄 ID (274:377:2)。
錯(cuò)誤3---------------------------------------------
錯(cuò)誤: 3313,嚴(yán)重度: 21,狀態(tài): 2
Error while redoing logged operation in database 'Jiapei'. Error at log record ID (274:377:2).
數(shù)據(jù)庫(kù)可以分離,但分離后無(wú)法附加,附加時(shí)出現(xiàn)“823”號(hào)錯(cuò)誤。
程序突然連接不數(shù)據(jù)庫(kù)了,開企業(yè)管理器發(fā)現(xiàn)數(shù)據(jù)庫(kù)SQL Server置疑!!!重啟數(shù)據(jù)庫(kù)后該數(shù)據(jù)庫(kù)又找不到了.
解決方法:
1.新建一個(gè)同名的數(shù)據(jù)庫(kù)
2.再停掉SQL Server
3.用suspect數(shù)據(jù)庫(kù)的文件覆蓋掉這個(gè)新建的同名數(shù)據(jù)庫(kù)
4.再重啟SQL Server
5.此時(shí)打開企業(yè)管理器時(shí)新建的同名數(shù)據(jù)庫(kù)會(huì)出現(xiàn)置疑,先不管,執(zhí)行下面的語(yǔ)句(注意修改其中的數(shù)據(jù)庫(kù)名)
- USE MASTER
- GO
- SP_CONFIGURE 'ALLOW UpdateS',1 RECONFIGURE WITH OVERRIDE
- GO
- Update SYSDATABASES SET STATUS =32768 Where NAME='置疑的同名數(shù)據(jù)庫(kù)名'
- Go
- sp_dboption '置疑的同名數(shù)據(jù)庫(kù)名', 'single user', 'true'
- Go
- DBCC CHECKDB('置疑的同名數(shù)據(jù)庫(kù)名')
- Go
- update sysdatabases set status =28 where name='置疑的同名數(shù)據(jù)庫(kù)名'
- Go
- sp_configure 'allow updates', 0 reconfigure with override
- Go
- sp_dboption '置疑的同名數(shù)據(jù)庫(kù)名', 'single user', 'true'
- Go
6.完成后一般就可以訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)了,這時(shí),數(shù)據(jù)庫(kù)本身一般還要問(wèn)題,解決辦法是,利用
數(shù)據(jù)庫(kù)的腳本創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),并將數(shù)據(jù)導(dǎo)進(jìn)去就行了.
外一篇:
1、新建一同名數(shù)據(jù)庫(kù)(文件名,文件組都和原來(lái)的一樣),然后停止數(shù)據(jù)庫(kù)服務(wù),用原來(lái)文件替換新建的數(shù)
據(jù)庫(kù)文件,啟動(dòng)數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)被設(shè)為suspect
2、把數(shù)據(jù)庫(kù)改成緊急模式:
- sp_configure 'allow', 1
- reconfigure with override
- update sysdatabases set status = 32768 where name = '數(shù)據(jù)庫(kù)名'
3、把LDF文件改名,再執(zhí)行
DBCC REBUILD_LOG ('數(shù)據(jù)庫(kù)名', 'E:\fdzz\database\fdzz1204_Log.LDF' )
4、恢復(fù)數(shù)據(jù)庫(kù)緊急模式
update sysdatabases set status = 0 where name = '數(shù)據(jù)庫(kù)名'
執(zhí)行
- restore database 數(shù)據(jù)庫(kù)名 WITH RECOVERY
- sp_configure 'allow', 0
- reconfigure with override
5、然后用DBCC CHECKDB ('數(shù)據(jù)庫(kù)名')看看有沒(méi)有錯(cuò)誤
6、如果上面還是不行,試試吧數(shù)據(jù)庫(kù)設(shè)為緊急模式,應(yīng)該可以看到數(shù)據(jù)了,在把數(shù)據(jù)導(dǎo)出到一個(gè)新的數(shù)據(jù)庫(kù)
。
其他有用的操作:
/*--重置SQL Server置疑狀態(tài)
1.系統(tǒng)方法:
如果 SQL Server 因?yàn)榇疟P驅(qū)動(dòng)器不再有可用空間,而不能完成數(shù)據(jù)庫(kù)的恢復(fù),
那么 microsoft? SQL Server? 2000 會(huì)返回錯(cuò)誤 1105
并且將 sysdatabases 中的 status 列設(shè)為置疑。按下面的步驟解決這個(gè)問(wèn)題:
執(zhí)行 sp_resetstatus。
語(yǔ)法為:
sp_resetstatus '數(shù)據(jù)庫(kù)名'
用 alter database 向數(shù)據(jù)庫(kù)添加一個(gè)數(shù)據(jù)文件或日志文件。
停止并重新啟動(dòng) SQL Server。
用新的數(shù)據(jù)文件或日志文件所提供的額外空間,SQL Server 應(yīng)該能完成數(shù)據(jù)庫(kù)的恢復(fù)。
釋放磁盤空間并且重新運(yùn)行恢復(fù)操作。
sp_resetstatus 關(guān)閉數(shù)據(jù)庫(kù)的SQL Server置疑標(biāo)志,但是原封不動(dòng)地保持?jǐn)?shù)據(jù)庫(kù)的其它選項(xiàng)。
【編輯推薦】