SQLSERVER2008R2 数据库可疑的解决步骤
异常关机后,金蝶帐套突然无法访问,发现数据库置疑,使用此方案解决: 一般情况下这样可以解决: 1、将数据库设置为应急状态 ? ALTER DATABASE AIS20150723104254 SET emergency 2、将数据库设置为单用户模式 ? ALTER DATABASE AIS20150723104254 SET SINGLE_USER 3、对数据库进行检查修复 ? DBCC CheckDB (AIS20150723104254,REPAIR_ALLOW_DATA_LOSS) REPAIR_ALLOW_DATA_LOSS代表,若此错误不能修复时,系统将直接删除相关数据。 ? DBCC ?checkdb (AIS20150723104254,REPAIR_REBUILD) 尝试直接修复数据库错误 使用上面两个语句进行数据库检查修复,如果返回结果中没有了红色的提示文字,说明修复成功 此数据库执行CHECKDB的过程中发现一些表的索引被破坏,于是针对具体的表进行重建索引的操作:? ? DBCC DBREINDEX(表名)? 完成后可以运行dbcc checkdb(db_name)检查数据库的完整性. 4、最后,取消单用户模式即可。 ? exec sp_dboption AIS20150723104254,N'single',N'false' ? ALTER DATABASE AIS20151130094910 SET MULTI_USER 日志文件损坏或丢失时,可以尝试此方法: 1、把问题数据库文件备份到其它目录 ? 停掉SQLSERVER服务,把服务器上出问题的数据库,假设名称为 ErrorDB的数据库文件及日志文件备份复制到其他目录,然后直接将其删除,把其数据库文件及日志文件也删除 2、新建同名数据库 ? 启动SQLSERVER服务,新建同名数据库ErrorDB,文件目录和文件名和原来一致 3、用备份的数据库文件替换新的数据库文件 ? 停掉SQLSERVER服务,把备份的数据库文件替换新的数据库文件(只替换数据库文件,不替换日志文件) ? 启动SQLSERVER服务,打开数据库,这时数据库应该是不能访问的 -------------------设置应急模式、单用户模式、检查修复数据,取消单用户模式---------------------- 4、将数据库设置为应急状态 ? alter database ErrorDB set emergency ? 执行后,为了保险起见,重新停止、开启的SQLSERVER服务 ? 再打开数据库,已经可以看到里面的内容了,如表,视图,存储过程等 ? 数据库名称后有紧急标志,能看到数据库结构,但无法进行备份等操作 5、将数据库设置为单用户模式 ? ALTER DATABASE ErrorDB SET SINGLE_USER 6、对数据库进行检查修复 ? dbcc checkdb(ErrorDB,REPAIR_ALLOW_DATA_LOSS) ? dbcc checkdb(ErrorDB,REPAIR_REBUILD) ? 操作后,仍然停止启动SQLSERVER服务(不确定是否需要,我只是为了想无干扰查看执行后的数据库状况) ? 7、取消单用户模式即可 ? exec sp_dboption ErrorDB,N'false' ? ALTER DATABASE ErrorDB SET MULTI_USER (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |