sqlserver重启后一直显示“正在恢复”,怎么办?

数据库文件太大了,有400G左右,重启后一直显示“正在恢复”(原因是直接重启sqlserver服务,导致有些事务没有提交),正常来说,一直等待就行(注意本文倡导的是一直等待,本文末有查询进度的办法),如果实在等不了,可以尝试用以下办法,可能会稍微快一点:

那么就:

1、关闭数据库服务

2、把数据文件和日志文件都剪切走

3、启动 数据库服务

4、删除数据库,因为Mdf、ldf文件都切走了,所以不会丢失文件

5、附加数据库,因为文件很大,同样需要等待很久,我是10几分钟附加完成的,耐心等待

注意事项:

a.我本来想不要LDF日志文件,只恢复MDF,发现不得成功

b.网上有教如何只用mdf恢复数据库,这个mdf好像是分离出来的才行,因为我是重启服务器后就一直显示正在恢复,所以根本米的机会分离,因为不是分离的mdf,所以只用mdf尝试恢复数据库以失败告终,总是提示“日志文件里面还有尚未提交的事务,所以必须要日志文件”

c.正在恢复的时候,可以尝试只允许windows身份验证模式,这样远程的一些数据库连接,就全部断了,比较好。看看这样会不会“正在恢复”快一些,我没有尝试。也许有点用途,因为我用的entity框架,发现数据库不在,会频繁的尝试新建数据库,这样貌似会跟“正在恢复”冲突吧,导致“正在恢复”耗时很久

d.其他正常操作的时候,也改成只允许windows身份验证模式,等数据库都妥当后,再允许sa连接

e.右击整个数据库服务器->属性->安全性,可以改成 只允许windows身份验证模式

 

=====================2020-6-4 23:34:46补充以下内容==========================

从sqlserver错误日志中,可以看到恢复的进度,和预估剩余时间

--第一个参数:存档编号;第二个参数固定死写1表示sqlserver错误日志;第三个参数包含的字符串
--其实这个系统自带的存储过程总共有7个参数,但是后面的参数没必要,所以就传了前3个必要的参数
--存档编号0没有的话,就写1、2都找找看,正常来说不在0就在1
user [master]
Exec xp_readerrorlog 0,1,'Recovery of database'

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值