早晨起来,收到监控服务器发给我的邮件,告诉我数据库服务器在4点多停止响应了。由于是星期五,一般是服务器更新补丁的时间,于是,我并不十分在意。
到了公司,有人向我报告有些应用不能使用了,我检查了一下,一些大的系统工作都正常,因此,我也没有想到数据库服务器会有什么问题,但是,随后,我发现有好几个数据库不能访问了。我打算重新启动一下数据库服务。这个时候,问题出现了,Sql Server服务再也起不来了。我检查了日志,大意是说无法访问model数据库。天,这是主数据库损坏了。我从事it很多年了,真正第一次遇到主数据库损坏的问题,我该怎么办?我一个想到的是恢复数据库,因为每天晚上,我的备份服务器都回备份主数据库master,因此,我立即进入备份服务器,然后,迅速建立了恢复作业。但是,恢复作业很快告诉我,由于远端进程没有响应,无法完成恢复操作。就是说,我要进行恢复作业,必须先让数据库服务启动才行。那重装一个SQl,然后再安装补丁,黄花菜都凉了,又赶上今天下午国庆放假,所有的部门都要登录服务器作周报月报之类的,如果不能及时恢复,那么,我们部门将会受到很多部门的指责,怎么办?我突然想到了一个办法,这个办法我们在实验室经常用到。
我迅速地从其他的sql上拷贝了一个master文件到这个该死的数据库服务器,然后,尝试启动,服务启动成功,但是,我的企业管理器却用Sa登录不了,原因很简单,这个master中的数据库用户显然和原来的不一样,不过没有关系,我用windows帐户就可以了。然后,我在启动我的恢复作业,启动其中的“自动恢复主数据库”选项,两分钟后,所有的问题的搞定了。剩下的问题就是要查找引发故障的原因了。