《解决SQLServer 2008 数据库质疑》由会员分享,可在线阅读,更多相关《解决SQLServer 2008 数据库质疑(3页珍藏版)》请在金锄头文库上搜索。
1、解决 SQLServer 2008 数据库质疑(挂起)问题Step1.执行语句,改变数据库状态EXEC SP_RESETSTATUS Your DBNameGOStep2:重置数据库状态之后,我们就应该对质疑的数据库执行 DBCC CHECKDB 命令,查看下为什么数据库会出现质疑状态.DBCC CHECKDB(Your DBName) WITH NO_INFOMSGS,ALL_ERRORMSGSGoStep3:找到原因之后, 那么就好解决了. 看报错信息中,已说明了 PK 中存在重复值.首先,将每个索引的脚本导出为 sql 文件. 之后再将表中主键栏位里的 duplicate 的行删除掉St
2、ep4:现在最好再立即执行下 DBCC CHECKDB 命令确认下是否还有错误信息 .之后确认没有,那么再将之前索引的脚本创建进去.Step5:在 Index 创建完毕之后,立即执行下 DBCC CHECKDB 命令确认下是否还有错误信息.确认无误,那么就需要立即对数据库执行一次完全备份作业.针对 SQL 2000 挂起情况进行修复Step1:设置数据库为紧急模式Use MasterGOsp_configure allow updates, 1reconfigure with overrideGOUPDATE sysdatabases SET status = 32768 where name
3、 = TESTGOStep2:停止数据库服务通过 Windows 服务或者 SQLServer 管理器.Step3:把原始数据库的数据文件 DBNAME_DAT.MDF,DBNAME_LOG.LDF 移走Step4:启动 SQL Server 服务Step5.重新建立一个同名的数据库 TEST;USE masterGOCREATE DATABASE TESTON( NAME = DBNAME_DAT,FILENAME = C:,SIZE = 10,FILEGROWTH = 5 )LOG ON( NAME = DBNAME_LOG,FILENAME = g:,SIZE = 5MB,FILEGRO
4、WTH = 5MB )GOStep6:设置数据库运行在单用户的模式:USE MASTERGOALTER DATABASE TEST SET SINGLE_USERGOStep7: 停掉 SQL 服务Step8:把原来的数据文件再覆盖回来Step9:启动 SQL Server 服务 Step10:设置数据库为紧急模式Use MasterGOsp_configure allow updates, 1reconfigure with overrideGOUPDATE sysdatabases SET status = 32768 where name = TESTGOStep11:修复数据库错误DB
5、CC CHECKDB(TEST, REPAIR_ALLOW_DATA_LOSS)Step12.恢复数据库为多用户模式USE MASTERGOALTER DATABASE TEST SET MULTI_USERGOStep13.恢复 SQLSERVER 原始的配置USE MATERGOUPDATE sysdatabases SET status = 4194320 where name = TESTGOStep14:配置 SQLSERVER 不允许更新系统表 USE MASTERGOsp_configure allow updates, 0reconfigure with overrideGOStep15:重新启动 MSSQLSERVER 服务,最好重新启动操作系统 .Step16:备份数据库特殊情况:不知道为什么,质疑修复后,数据库恢复正常了。但是重启了下服务器后,数据库又是质疑状态。最后只有使用导入导出将数据库对象导出到另外一个新的数据库中,最后将之前出现质疑的数据库删除掉,再将后来新建的数据库 rename 为之前的数据库名称