admin管理员组

文章数量:1535376

2024年7月2日发(作者:)

解决SQLServer 2008 数据库质疑(挂起)问题

Step1.执行语句,改变数据库状态

EXEC SP_RESETSTATUS 'Your DBName'

GO

Step2:重置数据库状态之后,我们就应该对质疑的数据库执行DBCC CHECKDB命令,

查看下为什么数据库会出现质疑状态.

DBCC CHECKDB('Your DBName') WITH NO_INFOMSGS,ALL_ERRORMSGS

Go

Step3:找到原因之后,那么就好解决了.看报错信息中,已说明了PK中存在重复值.首先,

将每个索引的脚本导出为sql文件.之后再将表中主键栏位里的duplicate的行删除掉

Step4:现在最好再立即执行下DBCC CHECKDB命令确认下是否还有错误信息.之后

确认没有,那么再将之前索引的脚本创建进去.

Step5:在Index创建完毕之后,立即执行下DBCC CHECKDB命令确认下是否还有错

误信息.确认无误,那么就需要立即对数据库执行一次完全备份作业.

针对SQL 2000挂起情况进行修复

Step1:设置数据库为紧急模式

Use Master

GO

sp_configure 'allow updates', 1

reconfigure with override

GO

UPDATE sysdatabases SET status = 32768 where name = 'TEST'

GO

Step2:停止数据库服务

通过Windows服务或者SQLServer管理器.

Step3:把原始数据库的数据文件DBNAME_,DBNAME_移走

Step4:启动SQL Server服务

Step5.重新建立一个同名的数据库TEST;

USE master

GO

CREATE DATABASE TEST

ON

( NAME = DBNAME_DAT,

FILENAME = 'C:',

SIZE = 10,

FILEGROWTH = 5 )

LOG ON

( NAME = 'DBNAME_LOG',

FILENAME = 'g:',

SIZE = 5MB,

FILEGROWTH = 5MB )

GO

Step6:设置数据库运行在单用户的模式:

USE MASTER

GO

ALTER DATABASE TEST SET SINGLE_USER

GO

Step7: 停掉SQL服务

Step8:把原来的数据文件再覆盖回来

Step9:启动SQL Server服务

Step10:设置数据库为紧急模式

Use Master

GO

sp_configure 'allow updates', 1

reconfigure with override

GO

UPDATE sysdatabases SET status = 32768 where name = 'TEST'

GO

Step11:修复数据库错误

DBCC CHECKDB('TEST', REPAIR_ALLOW_DATA_LOSS)

Step12.恢复数据库为多用户模式

USE MASTER

GO

ALTER DATABASE TEST SET MULTI_USER

GO

Step13.恢复SQLSERVER原始的配置

USE MATER

GO

UPDATE sysdatabases SET status = 4194320 where name = 'TEST'

GO

Step14:配置SQLSERVER不允许更新系统表

USE MASTER

GO

sp_configure 'allow updates', 0

reconfigure with override

GO

Step15:重新启动MSSQLSERVER服务,最好重新启动操作系统.

Step16:备份数据库

特殊情况:不知道为什么,质疑修复后,数据库恢复正常了。但是重启了下服务器后,

数据库又是质疑状态。最后只有使用导入导出将数据库对象导出到另外一个新的数据库中,

最后将之前出现质疑的数据库删除掉,再将后来新建的数据库rename为之前的数据库名

本文标签: 数据库质疑执行确认