前几天客户那边的服务器死机了,然后客户强制关机,重新启动服务器后,系统就没法正常使用,连接不上服务器,我远程操作后,看到数据库标注为可疑,由于客户之前没备份数据库,看来只能是修复了:
1:停止数据库服务,将可疑的数据库及日志备份到别的文件夹,随后删除数据库文件及日志文件
2:打开数据库服务,连接数据库后删除可疑的数据库,并新建同名的数据库(目录位原来的目录)
3:停止数据库服务,将备份的数据库文件替换新建的数据库文件(日志文件不需要替换)
4:打开数据库服务,连接数据库后执行alter database 数据库名 set emergency,将数据库改为紧急模式, 执行后,为了保险起见,重新停止、开启的SQLSERVER服务,再打开数据库,已经可以看到里面的内容了,如表,视图,存储过程等,数据库名称后有紧急标志,能看到数据库结构,但无法进行备份等操作
5:执行ALTER DATABASE 数据库名 SET SINGLE_USER,将数据库设为单用户模式
6:对数据库进行检查修复dbcc checkdb(数据库名,REPAIR_ALLOW_DATA_LOSS),(这里有个很奇怪的现象,最早开始修复的时候,数据库130多G,这一步执行了6个多小时,昨天修复的时候,数据库打到了160G,这一步只执行了43分钟,不知道怎么回事),执行完成后会看到提示错误,不用管,操作后,仍然停止启动SQLSERVER服务(不确定是否需要,我只是为了想无干扰查看执行后的数据库状况)重新打开数据库,已经是正常状态了,没有应急提示了
7:取消单用户模式 ALTER DATABASE 数据库名 SET MULTI_USER
至此,数据库修复完毕,被标记为“可疑”的数据库已恢复正常状态。