解决SQL数据库被质疑的故障
2020-04-15陆军步兵学院石家庄校区薄鹏国防大学联合作战学院聂磊
■ 陆军步兵学院石家庄校区 薄鹏 国防大学联合作战学院 聂磊
笔者所在单位使用的是在服务器部署安装H3C智能管理中心(IMC),客户端安装终端认证程序进行上网认证。iMC(智能管理中心)依赖数据库,目前iMC在Windows环境下支持SQL 2005和SQL 2008数据库。
故障现象
某日清晨,笔者发现客户端连接认证服务器无响应,经过排查是由于异常断电造成的认证服务器宕机,将认证服务器开机后,上网认证一切正常,但从IMC认证管理平台界面发现原有显示设备性能情况(设备CPU、内存使用率、响应时间等)的数据无法读取,这将直接影响网络管理员对网络设备的管理决策,因此参数指标的恢复显示变得尤为重要。
初步诊断
图1 Perf_db数据库被质疑
iMC(智能管理中心)是基于SQL数据库的,数据的读取都是从数据库中读取数据,初步判断应该是数据库出了问题。当前认证服务器使用的是SQL 2008数据库,通过SQL客户端SQL Server Manager Studio登录到SQL发现对应的主管性能的Perf_db数据库被质疑,英文版SQL的数据库会被标示Suspect字样,具体如图1所示。
解决故障
通常这个问题是由于硬盘空间不够或硬盘读写错误,异常关机等原因导致SQL数据库被质疑,经过反复尝试解决方法如下。
打开数据库里的SQL查询编辑器窗口,运行以下命令:
1.修改数据库为紧急模式。
USE Perf_db
ALTER DATABASE Perf_db SET EMERGENCY;
注意:如果执行此命令不成功提示“紧急模式修复失败”,多是由于此数据库有数据锁定,需要使用exec sp_who2命令找到占用Perf_db程序的PID号,之后使用KILL PID将其结束掉。
2.使数据库变为单用户模式。
ALTER DATABASE Perf_db SET SINGLE_USER;
注意:根据数据库文件的大小,执行此命令可能需要一些时间,尽可能多执行一段时间,如果执行时间过长就要终止执行,改用手动修改成单用户模式,方法很简单:在Perf_db数据库右键单击选属性,在弹出的对话框中选择“选项”之后在右边的选项中找到“限制访问”,在下拉框中选择“SINGLE_USER”之后确定。
3.修复数据库日志重新生成,此命令检查的分配、结构、逻辑完整性和所有数据库中的对象错误。
当指定“REPAIR_ALLOW_DATA_LOSS”来作为DBCC CHECKDB命令参数,该程序将检查和修复报告的错误,但是,这些修复可能会导致一些数据丢失。
DBCC CheckDB (Perf_db,REPAIR_ALLOW_DATA_LOSS)
4.使数据库变回为多用户模式
ALTER DATABASE Perf_db SET MULTI_USER
注意:如果命令执行不成功,可以参照第2步的方法手动修改为多用户模块,需要在下拉框中选择“MULTI_USER”之后单击确定。
5.重启SQL服务进程,使用SQL Server Manager Studio登录数据库查看对应的进程是否正常。
6.修复完成,打开IMC认证管理平台界面发现久为的性能指标参数又显示了出来。
结语
修复过程都是经过笔者亲试,当然这篇文章也只是起到一个抛砖引玉的作用,希望读者遇到类似问题时能举一反三,务必保证服务器的供电正常,否则将会造成诸多莫名其妙的问题。