一、问题描述
连接数据库(HBNX_MCC_DEV和HBNX_MCC_UAT)时,报错“SUSPECT”(数据库“可疑”,外界无法使用)。
二、问题原因
服务器意外down机,导致有连接未断开的数据库状态变为“可疑”。
三、问题解决
由于没有前一天的备份文件,所以需要找回数据库的数据!
1、开通系统表修改权限
sp_configure 'allow updates', 1;
reconfigure with override;
2、将数据库状态设置为-32768(只读\脱机\紧急模式)
update sysdatabases set status = -32768 where name in ('HBNX_MCC_DEV','HBNX_MCC_UAT')
3、新建数据库HBNX_MCC_DEV_20190121和HBNX_MCC_UAT_20190121
4、找一份原来的备份文件,进行数据库还原(获取表结构、索引、触发器和存储过程等)
--在HBNX_MCC_DEV_20190121上使用HBNX_MCC_DEV的老备份文件进行还原操作
--在HBNX_MCC_UAT_20190121上使用HBNX_MCC_UAT的老备份文件进行还原操作
5、只读模式下无法备份,可以使用“DTS导出”数据,但是DTS不能导出索引、触发器和存储过程等,所以有上一步的还原操作
--使用DTS将HBNX_MCC_DEV中的数据导出到HBNX_MCC_DEV_20190121
--使用DTS将HBNX_MCC_UAT中的数据导出到HBNX_MCC_UAT_20190121
6、恢复原数据库状态(将出问题的数据库状态改为0-正常,如果一直处于“紧急模式”,可能会对其他数据库操作有影响)
update sysdatabases set status = 0 where name in ('HBNX_MCC_DEV','HBNX_MCC_UAT')
7、关闭系统表修改权限
sp_configure 'allow updates', 0;
reconfigure with override;
四、附录
1、查询数据库当前状态参数
select * from sysdatabases where name = 'HBNX_MCC_DEV'
2、检查并处理数据库1
dbcc checkdb('HBNX_MCC_DEV')
3、检查并处理数据库2
dbcc checkalloc('HBNX_MCC_DEV')