失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > SqlServer的LDF文件丢失 如何仅用MDF文件恢复数据库呢?(已解决)

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

时间:2019-04-10 18:31:03

相关推荐

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

笔者的一个大小为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 emergencyalter database TestDB set single_user with rollback immediatealter 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之后, 问题解决.

如果觉得《SqlServer的LDF文件丢失 如何仅用MDF文件恢复数据库呢?(已解决)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。