SQL恢复挂起的原因和措施解析

发布时间:2025-12-09 17:09:10 浏览次数:4

碰到这个提示,一定要多刷新几遍,这样就会显示某个数据库恢复挂起,不然自己的数据库丢了都不知道,嘤嘤嘤
test数据库在长时间不用后 忽然变成了恢复挂起
手一抖,删除了原数据库,不过还是不甘心,想找出恢复挂起的原因,特意创建了一个供我“玩弄”的空白数据库–学院
原因如下:
也许不全面,

  • [ 1] 我将数据库文件移动了之后,再刷新,就会出现不能请求数据的弹框 ,再刷新几遍就会出现学院(恢复挂起)的标识,
  • [ 2] 我又在移动数据库文件之后,在打开数据库之前移动回来,不会出现弹框
  • [3 ] 在已经出现恢复挂起之后,重新将文件移回来,再刷新是不管用的、
    呃呃呃综合来看,刷新是不会重新联机的啊,我还在方法一思考了好久,有点傻,跑题了,因此,我分析,恢复挂起的常用原因之一
    是在连接数据库时,数据库的位置发生移动,
    但是程序记得你有过这个数据库啊,懵逼几遍(刷新)之后,觉得不行,得告诉你一声,于是,就有了学院(恢复挂起),尽到义务,让你去折腾。

解决办法

1

.脱机后再联机即可
PS:要将文件恢复原位,不然,会发生这个

原本是restore database run with recovery这个命令,
后来发现它要脱机才能运行,脱机后又继续报错
联机后居然成功恢复,特意重复恢复挂起了几遍后,忽然意识到,报错的说不定根本没什么用,又把执行命令这一步骤去掉后果然是这样,但也可能是我对这个命令的打开方式不对

  • 如果你的数据库还处于挂起状态,请把我下面代码的test改为你的库名,然后执行完,刷新就正常了:

    USE masterGOALTER DATABASE test SET SINGLE_USERGOALTER DATABASE test SET EMERGENCYGODBCC CHECKDB(test,REPAIR_ALLOW_DATA_LOSS)goALTER DATABASE test SET ONLINEGOALTER DATABASE test SET MULTI_USERGO

    ————————————————
    这个亲测,可以,看起来也好复杂,没有搞懂

    中间还有很长
    忽然意识到大多数方法的本质是重新联机,其他方法看了看,没有再实验和誊录,但是方法二逼格高鸭,一定要选入的
    DBCC :
    这些语句对数据库的物理和逻辑一致性进行检查。
    许多 DBCC 语句能够对检测到的问题进行修复。  
    呃呃呃,原来是官方支援
    参考:https://www.jb51.net/article/167793.htm
    https://blog.csdn.net/YouYou_GO/article/details/79868919

    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477