求教sql数据库出现恢复挂起的状态如何处理

时间:2022-06-14 22:43:20
昨天下午程序突然报错,一查后台是由于磁盘空间满了,导致中间数据库显示恢复挂起的状态。
求教sql数据库出现恢复挂起的状态如何处理
用网上查询的办法,例如傲世狂少的方法USE master
GO
ALTER DATABASE test SET SINGLE_USER
GO
ALTER DATABASE test SET EMERGENCY
GO
DBCC CHECKDB(test,REPAIR_ALLOW_DATA_LOSS)
go
ALTER DATABASE test SET ONLINE
GO
ALTER DATABASE test SET MULTI_USER
GO
求教sql数据库出现恢复挂起的状态如何处理
求大神帮忙看下,有没有办法可以处理。数据库文件70G,日志文件90G,磁盘剩余空间130G。服务器会不会

11 个解决方案

#1


文件损坏了,找备份来恢复吧

#2


引用 1 楼 Haiwer 的回复:
文件损坏了,找备份来恢复吧
 这种情况等它自动恢复没办法么?

#3


你要一个个步骤去执行,不是一次性执行所有代码。
先看能否切换到EMERGENCY,
再是设置数据为EMERGENCY,
然后再是checkdb。
如果到checkdb出现824错误,那么才考虑是否可以使用
DBCC CHECKDB (dbname, repair_allow_data_loss) with NO_INFOMSGS
恢复,这步骤会导致丢失一些数据,总比什么都好。
等数据库修复ok了,再执行最后的两句。

ALTER DATABASE test SET ONLINE
GO
ALTER DATABASE test SET MULTI_USER
GO

如果以上的方法都没解决问题,那么可能要通过之前的数据库备份文件恢复了。

#4


先看能否切换到SINGLE_USER

#5


引用 4 楼 DVD_01 的回复:
先看能否切换到SINGLE_USER


能的话,先切到这个下面再操作,否则操作过程中再可能会有新数据之类产生

会越来越麻烦.

#6


引用 4 楼 DVD_01 的回复:
先看能否切换到SINGLE_USER

没办法切到SINGLE_USER,难受 求教sql数据库出现恢复挂起的状态如何处理
求教sql数据库出现恢复挂起的状态如何处理

#7


提示 语法错误,是不是你输入法问题?
你看其他进程正在使用superfzyk数据库,能kill就先kill掉

#8


引用 7 楼 DVD_01 的回复:
提示 语法错误,是不是你输入法问题?
你看其他进程正在使用superfzyk数据库,能kill就先kill掉

语法错误是空格的问题,改过来了也是一样的结果,奔溃了

#9




引用 8 楼 qq_37721792 的回复:
Quote: 引用 7 楼 DVD_01 的回复:

提示 语法错误,是不是你输入法问题?
你看其他进程正在使用superfzyk数据库,能kill就先kill掉

语法错误是空格的问题,改过来了也是一样的结果,奔溃了

根据提示一个一个的解决,
磁盘空间没问题吧?,检查下数据库文件属性中的权限是否设置正确。

#10


检查磁盘是否满了,要是没满就执行下面语句(注意数据库名称)
ALTER DATABASE EPDM SET SINGLE_USER
ALTER DATABASE EPDM SET ONLINE
ALTER DATABASE EPDM SET MULTI_USER

#11


产自要把磁盘空间清理出来,不然恢复无法完成( 从你的戴图来看,你明显没有清理磁盘,仍然是提示空间不足
其次,提示已经告诉你正在恢复了,你查下 sql server 日志(sp_readerrorlog) ,日志中应该有该库正在恢复的日志记录(里面有进度的百分比),除非这个进度长时间不动,否则正常情况都是等它完成

#1


文件损坏了,找备份来恢复吧

#2


引用 1 楼 Haiwer 的回复:
文件损坏了,找备份来恢复吧
 这种情况等它自动恢复没办法么?

#3


你要一个个步骤去执行,不是一次性执行所有代码。
先看能否切换到EMERGENCY,
再是设置数据为EMERGENCY,
然后再是checkdb。
如果到checkdb出现824错误,那么才考虑是否可以使用
DBCC CHECKDB (dbname, repair_allow_data_loss) with NO_INFOMSGS
恢复,这步骤会导致丢失一些数据,总比什么都好。
等数据库修复ok了,再执行最后的两句。

ALTER DATABASE test SET ONLINE
GO
ALTER DATABASE test SET MULTI_USER
GO

如果以上的方法都没解决问题,那么可能要通过之前的数据库备份文件恢复了。

#4


先看能否切换到SINGLE_USER

#5


引用 4 楼 DVD_01 的回复:
先看能否切换到SINGLE_USER


能的话,先切到这个下面再操作,否则操作过程中再可能会有新数据之类产生

会越来越麻烦.

#6


引用 4 楼 DVD_01 的回复:
先看能否切换到SINGLE_USER

没办法切到SINGLE_USER,难受 求教sql数据库出现恢复挂起的状态如何处理
求教sql数据库出现恢复挂起的状态如何处理

#7


提示 语法错误,是不是你输入法问题?
你看其他进程正在使用superfzyk数据库,能kill就先kill掉

#8


引用 7 楼 DVD_01 的回复:
提示 语法错误,是不是你输入法问题?
你看其他进程正在使用superfzyk数据库,能kill就先kill掉

语法错误是空格的问题,改过来了也是一样的结果,奔溃了

#9




引用 8 楼 qq_37721792 的回复:
Quote: 引用 7 楼 DVD_01 的回复:

提示 语法错误,是不是你输入法问题?
你看其他进程正在使用superfzyk数据库,能kill就先kill掉

语法错误是空格的问题,改过来了也是一样的结果,奔溃了

根据提示一个一个的解决,
磁盘空间没问题吧?,检查下数据库文件属性中的权限是否设置正确。

#10


检查磁盘是否满了,要是没满就执行下面语句(注意数据库名称)
ALTER DATABASE EPDM SET SINGLE_USER
ALTER DATABASE EPDM SET ONLINE
ALTER DATABASE EPDM SET MULTI_USER

#11


产自要把磁盘空间清理出来,不然恢复无法完成( 从你的戴图来看,你明显没有清理磁盘,仍然是提示空间不足
其次,提示已经告诉你正在恢复了,你查下 sql server 日志(sp_readerrorlog) ,日志中应该有该库正在恢复的日志记录(里面有进度的百分比),除非这个进度长时间不动,否则正常情况都是等它完成