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