SqlServer的LDF文件丢失, 如何仅用MDF文件恢复数据库呢?(已解决)

10 篇文章 0 订阅
2 篇文章 0 订阅

笔者的一个大小为2 TB的SQL Server的database的LDF文件在玩存储盘映射的过程中莫名其妙的丢失了. 好在MDF文件还在. 笔者慌了, Bruce Ye告诉笔者, 不用着急, 光用MDF也可以把数据库弄回来的. 笔者就问Bruce, 假设我可以容忍LDF中信息的丢失的话, 那么该如何恢复这个数据库呢?

我们执行了下面的步骤:

已知:我的数据库名称为:TestDB

1.在SQL Server Management Studio中删除状态为Recovery Pending的(即丢失了LDF的)问题数据库.

2.重命名老的MDF文件.

3.重建一个新的数据库, 名字跟刚刚删除的数据库完全一样. 注意, 新的MDF的位置跟我们老的MDF的文件的位置相同. 这里的LDF文件的位置选在你想要存放的最终位置上(这个就是你所要的被恢复的LDF文件了).

4.停掉SQL Server服务, 将新的MDF重命名掉, 老的MDF命名回原来的名字.

5.启动SQL Server服务, 这时这个数据库的状态会变为Recovery Pending. 我们开始执行下面的脚本.

alter database TestDB set emergency
alter database TestDB set single_user with rollback immediate
alter database TestDB rebuild log on (name=TestDB_log, filename='D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\TestDB_log.ldf')
alter database TestDB set multi_user with rollback immediate

这时数据库的状态就应该恢复正常了.

问题解决.

笔者在运行上面的脚本的时候, 遇到了一个报错. 在运行了命令alter database TestDB set single_user with rollback immediate之后, 运行alter database TestDB rebuild log on 的时候说数据库在single user mode, 我的当前用户无法执行命令.

我使用了命令exec sp_who2, 发现我的TestDB上有个suspend的session, 执行命令kill XY 杀掉这个死掉的session之后, 问题解决.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邵_金波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值