8

如果我删除与我的.ldf文件位于同一文件夹中的.mdf文件会怎样?

4

4 回答 4

19

LDF 文件是事务日志,是所有 SQL Server 配置所必需的。根据恢复模式,将确定它的使用方式。然而,所有查询基本上都存储在这里,直到成功提交到数据库(MDF)。

当 SQL Server 服务正在运行时,您将无法删除它。您可以分离数据库、删除日志文件 (LDF) 并重新附加数据文件 (MDF)。但是它只会创建一个新的日志文件。你真的不需要删除它。如果它变得太大,您将需要管理它,通常是通过备份过程。

于 2011-05-10T06:42:45.430 回答
4

该数据库将在 SQL Server 重新启动时被标记为可疑并且无法访问,而无需进行一些深入的操作来恢复它。

LDF 是数据库的重要组成部分:您需要这个文件。

你当然可以不理我们,删掉自己看看……

于 2011-05-10T06:49:41.037 回答
2

正如已经指出的那样,.LDF 文件对于 DB 至关重要,如果没有这个文件,DB 将无法使用。.LDF 只有在 DB 脱机、分离或 SQL 服务停止时才能删除。

假设上述 3 种情况之一为真,并且您确实删除了 .LDF 文件,那么当 SQL Server 重新启动时,数据库将被怀疑。如果数据库处于脱机状态,而您尝试将其重新联机,则会出现错误:

File activation failure. The physical file name "<<filename.ldf>>" may be incorrect.
Msg 945, Level 14, State 2, Line 1
Database '<<DB Name>>' cannot be opened due to inaccessible files or insufficient
memory or disk space.  See the SQL Server errorlog for details.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.

修复此错误非常简单,但您需要从系统文件中删除与数据库相关的所有元数据。最简单的方法是删除数据库。这是您需要做的。

  • 使数据库脱机或分离数据库
  • 将 .MDF 文件复制到您的备份目录
  • 现在删除数据库(当然,如果你分离了,你将不得不重新连接数据库)
  • 将 .MDF 复制回原始位置

在这些步骤之后,运行以下命令:

SP_ATTACH_SINGLE_FILE_DB @dbname='<<DBName>>' ,@physname=N'<<filepath\filename.MDF>>'

这应该会返回以下内容:

File activation failure. The physical file name "<<Filepath\filename.ldf>>" 
may be incorrect.
New log file '<<Filepath\filename.ldf>>' was created.

这将使您的数据库恢复到可用状态。

百万美元的问题仍然存在 - 为什么有人要删除 .LDF 文件?

拉吉

于 2011-05-10T09:00:14.413 回答
1

控制大小的最佳方法.LDF file是:

  • 定期进行事务日志备份,每天至少一次或
  • 将您的恢复模式从完整更改为简单(默认情况下,它是完整的)
于 2013-02-13T10:51:57.170 回答