mssql sqlserver SQL Server 在运行过程中,数据库的状态突然变成“恢复挂起” , 重启后恢复正常的解决方法分享


摘要:
用户的生产环境多次使用中,发现无法正常使用,重复登录也无法进入erp系统,经过仔细核查,发现数据库运行一段时间就会变为”恢复挂起”的状态,重启sqlserver服务,一切恢复正常,最近几天一直出现此类问题,下文将记载此问题的解决方案。
实验环境:sqlserver 2008 R2


服务器环境:
window server 2008
sqlserver 2008
.net framework 3.5
sql文件大小:
数据文件:35G
数据日志文件:80G
错误现象:
运行一段时间,数据库服务就自动变为”恢复挂起”状态。
出现以下错误消息:

错误: 18456,严重性: 14,状态: 38


解决方案:

  ---第一步: dbcc checkdb未发现任何问题
    ALTER DATABASE 数据库名称 SET SINGLE_USER
DBCC CHECKDB(数据库名称)
ALTER DATABASE 数据库名称 SET MULTI_USER
  ---第二步: 核查sqlserver 文件的增长率设置
   ---右键指定数据库,点击 属性,查看"文件",如下图所示,查看文件的增长率为10%
    
mssql_sqlserver_文件增长率查看

mssql_sqlserver_文件增长率查看

--通过一个周的跟踪 ---发现当文件快占满时,增长10%,此时数据库服务会变为"恢复挂起"的状态, ---通过调整文件的增长模式,每次增长指定值100M,观察了几个月,数据库再也没有出现服务被"恢复挂起"的状态。


注意事项:
当出现”数据库服务”被“恢复挂起”时,有必要分析数据库文件的增长模式是否过大或者过小,因为增长是否导致大量的IO操作,导致操作系统停止了sqlserver服务。