2024年5月8日发(作者:)

MSSQL数据库置疑的说明及修复方法

MSSQL 官方对suspect

(‘置疑’,SQL2005中文为‘可疑’)

状态的解释:“

至少主文件组可

疑或可能已损坏。在 SQL Server 启动过程中无法恢复数据库。数据库不可用。需要用户另外执行操作来解决

问题。”

SQL Server 数据库置疑通常由于以下几种情况导致:

1、 因SQL服务意外退出导致数据库置疑,例如突然断电导致数据库日志文件损坏,下次启动后数据库变

为置疑状态。

数据库文件所在的磁盘分区没有可用空间,导致恢复数据库的操作不能完成,数据库变为置疑状态。

数据库文件组已满,这种情况通常发生在MSDE或SQL 2005 Express,因为它们对数据库文件限制了

大小,不超过2G或4G;当单个的数据库文件接近2G或4G很容易出现数据库置疑的情况;

另外,当数据库文件所在磁盘分区格式为FAT32时,也有可能出现这种情况,FAT32格式的磁盘分

区单个文件不能超过4G,当单个的数据库文件接近4G很容易出现数据库置疑的情况。

4、

5、

数据库文件设置为不自动增长,或设置为自动增长但限制了文件大小。

此外,其它非法的操作也有可能导致数据库置疑。

2、

3、

以下提供几种解决V3数据库置疑的办法:

解决客户那里出现数据库置疑通常使用第一或第二种方法,解决问题时请根据

实际情况处理

提示:按以下方法修复数据库后,还需要用户密切观察一下V3服务器是否能正常运行、服务器是否

有出错;查看服务器是否有出错可以右击服务管理器-‘工具’-‘日志’,在弹出的事件日志窗口

中,查看应用程序日志中是否有OSERVER3的错误信息;如果有出错信息可能会出现数据收集不完整

等问题,请即时联系我们解决。

问题一:SQL 2005 数据库置疑的解决方法

SQL SERVER 2005,数据库置疑,可以尝试通过以下办法解决:

--第一步:新建查询,执行以下SQL 语句;

USE master

GO

Achao_hupu 第 1 页 Created on 8/31/2008 11:43:00 AM

SP_CONFIGURE 'ALLOW UPDATE',1

GO

RECONFIGURE WITH OVERRIDE

GO

ALTER DATABASE OCULAR3 SET EMERGENCY --设置OCULAR3为紧急模式

GO

SP_DBOPTION 'OCULAR3','SINGLE USER', 'TRUE' --设置OCULAR3为单用户模式

GO

--第二步:继续执行以下SQL语句

DBCC CHECKDB('OCULAR3') --检查数据库的结构完整性,可能需要比较长时间

GO

--第三步:继续执行以下SQL语句

DBCC CHECKDB('OCULAR3','REPAIR_ALLOW_DATA_LOSS') --修复数据库,可能需要比较长时间;执行到

这一步,如果提示需要在单用户模式下运行,那么可以重启一下SQL SERVER服务再执行;

GO

--第四步:

SP_DBOPTION 'OCULAR3','SINGLE USER', 'FALSE' --设置OCULAR3为多用户模式

GO

ALTER DATABASE OCULAR3 SET ONLINE --设置OCULAR3为正常模式

GO

SP_CONFIGURE 'ALLOW UPDATE',0

GO

RECONFIGURE WITH OVERRIDE

GO

--第五步:继续执行以下SQL语句

DBCC CHECKDB('OCULAR3') –再次检查数据库的结构完整性

GO

问题二:

SQL SERVER 2000,因为断电导致数据库被破坏而置疑,可以通过以下办法解决:

--第一步:新建查询,执行以下SQL 语句;

USE master

GO

SP_CONFIGURE 'ALLOW UPDATE',1

GO

RECONFIGURE WITH OVERRIDE

GO

--设置数据库为紧急模式

UPDATE sysdatabases SET status = 32768 WHERE name = 'OCULAR3'

GO

SP_DBOPTION 'OCULAR3','SINGLE USER', 'TRUE' --设置OCULAR3为单用用户模式

GO

--第二步:继续执行以下SQL语句

DBCC REBUILD_LOG('OCULAR3','d:ocular3_log_') --重建日志文件,

--通常重建的日志文件放在与其它数据库文件相同目录下。比如OCULRA3数据库文件是保存在D盘,日志文件为

ocular3_,现重建一日志文件为d:ocular3_log_

--第三步:继续执行以下SQL语句

DBCC CHECKDB('OCULAR3') --检查数据库的结构完整性

GO

--如果以上语句执行完成后,提示提示数据库有错误,则还需执行下面这两句:

Achao_hupu 第 2 页 Created on 8/31/2008 11:43:00 AM