2024年2月8日发(作者:)
解决SQLServer2008数据库质疑(挂起)问题Step1.执行语句,改变数据库状态EXECSP_RESETSTATUS'YourDBName'GOStep2:重置数据库状态之后,我们就应该对质疑的数据库执行DBCCCHECKDB命令,查看下为什么数据库会出现质疑状态.DBCCCHECKDB('YourDBName')WITHNO_INFOMSGS,ALL_ERRORMSGSGoStep3:找到原因之后,那么就好解决了.看报错信息中,已说明了PK中存在重复值.首先,将每个索引的脚本导出为sql文件.之后再将表中主键栏位里的duplicate的行删除掉Step4:现在最好再立即执行下DBCCCHECKDB命令确认下是否还有错误信息.之后确认没有,那么再将之前索引的脚本创建进去.Step5:在Index创建完毕之后,立即执行下DBCCCHECKDB命令确认下是否还有错误信息.确认无误,那么就需要立即对数据库执行一次完全备份作业.针对SQL2000挂起情况进行修复Step1:设置数据库为紧急模式UseMaster
GOsp_configure'allowupdates',1reconfigurewithoverrideGOUPDATEsysdatabasesSETstatus=32768wherename='TEST'GOStep2:停止数据库服务通过Windows服务或者SQLServer管理器.Step3:把原始数据库的数据文件DBNAME_,DBNAME_移走Step4:启动SQLServer服务Step5.重新建立一个同名的数据库TEST;USEmasterGOCREATEDATABASETESTON(NAME=DBNAME_DAT,FILENAME='C:',SIZE=10,FILEGROWTH=5)LOGON(NAME='DBNAME_LOG',FILENAME='g:',SIZE=5MB,FILEGROWTH=5MB)GOStep6:设置数据库运行在单用户的模式:USEMASTERGOALTERDATABASETESTSETSINGLE_USERGOStep7:停掉SQL服务Step8:把原来的数据文件再覆盖回来Step9:启动SQLServer服务Step10:设置数据库为紧急模式UseMaster
GOsp_configure'allowupdates',1reconfigurewithoverrideGOUPDATEsysdatabasesSETstatus=32768wherename='TEST'GOStep11:修复数据库错误DBCCCHECKDB('TEST',REPAIR_ALLOW_DATA_LOSS)Step12.恢复数据库为多用户模式USEMASTERGOALTERDATABASETESTSETMULTI_USERGOStep13.恢复SQLSERVER原始的配置USEMATERGOUPDATEsysdatabasesSETstatus=4194320wherename='TEST'GOStep14:配置SQLSERVER不允许更新系统表USEMASTERGOsp_configure'allowupdates',0reconfigurewithoverrideGOStep15:重新启动MSSQLSERVER服务,最好重新启动操作系统.Step16:备份数据库特殊情况:不知道为什么,质疑修复后,数据库恢复正常了。但是重启了下服务器后,数据库又是质疑状态。最后只有使用导入导出将数据库对象导出到另外一个新的数据库中,最后将之前出现质疑的数据库删除掉,再将后来新建的数据库rename为之前的数据库名称


发布评论