#常见问题#【干货分享】数据库实体ldf日志文件不小心删除了,只有mdf文件,而且无法附加mdf,怎么办?原创
金蝶云社区-张半仙
张半仙
35人赞赏了该文章 3,463次浏览 未经作者许可,禁止转载编辑于2022年12月07日 17:32:14
summary-icon摘要由AI智能服务提供

本文讨论了当SQL Server数据库的ldf日志文件被误删而仅剩mdf文件时,如何恢复数据库的方法。过程包括备份mdf文件,通过SSMS重建同名数据库并替换mdf文件,然后通过SQL命令将数据库设置为紧急模式和单用户模式,重建ldf日志文件,并修复数据库一致性。注意操作需具备SQL Server Management Studio。

1.【问题描述】:数据库实体ldf日志文件不小心删除了,只有mdf文件,无法附加。

d52b5ddbbcf867b364c3fab57e72e823_0100fe8fb1579cf94dc2b08a826c97870f34.png

2.【原因分析】:杀毒软件不小心删除(ldf文件没了),附加不上去(ldf文件损坏)

3.【解决方法】:

Step1:首先要备份好唯一的mdf文件(多备份几份,要不然彻底玩完了

Step2在数据库中新建一个需要附加同名的数据库。例如【AIS20200020212】

Step3停止SQL Server服务

Step4找到该数据库所在的文件夹、并删除AIS20200020212_log.ldf与AIS20200020212.mdf文件

Step5把需要附加的数据库【AIS20200020212.mdf】文件拷贝到当前路径。

Step6启动SQL Server服务。

Step7此时的Step1中新建的数据库地址已经指向你需要附加数据库的mdf文件了。但是现在数据库还是无法打开的。

Step8执行语句:ALTER DATABASE AIS20200020212 SET EMERGENCY

Step9执行语句:ALTER DATABASE AIS20200020212 SET SINGLE_USER

Step10执行语句:ALTER DATABASE AIS20200020212 REBUILD LOG ON (NAME=AIS20200020212_log, FILENAME='F:\MSSQL2008\DATA\DM_log.ldf') 最后这一句F:开头的是指的重建的ldf文件存放的位置、,需要改成跟第5条的mdf文件一样的路径  

       这一步可能会出现两个问题:

      a.如果出现无法操作数据库文件,那么修改DM.mdf文件的权限为完全控制。

      b.其中FILENAME为你需要新建ldf日志的路径已经ldf文件名称。运行后会出现一条警告“执行后,会有警告信息“警告: 数据库 'xhtyjbbs' 的日志已重新生成。已失去事务的一致性。RESTORE 链已断开,服务器不再有以前的日志文件的上下文,因此您需要了解它们的内容。应运行 DBCC CHECKDB 验证物理一致性。数据库已置于 dbo-only 模式。在准备使数据库可用时,需要重置数据库选项,并删除所有多余的日志文件。”这一步忽略,执行下面步骤   


Step11 DBCC CHECKDB(DM, REPAIR_ALLOW_DATA_LOSS)    

      备注:这一步会比较卡,可能会导致界面未响应。多等一会,成功后数据库变成了单用户模式,下面两步骤修改成多用户模式。

Step12ALTER DATABASE DM SET MULTI_USER   改成多用户的意思

Step13ALTER DATABASE DM SET ONLINE


4.【补充说明】:必须得是有SSMS(SQL Server Management Studio)的才可以操作。

图标赞 35
35人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0