为什么我们需要LDF文件和MDF文件?

时间:2011-05-10 06:39:27

标签: sql-server mdf

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

4 个答案:

答案 0 :(得分:19)

LDF文件是transaction log,是所有SQL Server配置所必需的。根据{{​​3}},将确定其使用方式。但是,所有查询基本上都存储在此处,直到成功提交到数据库(MDF)。

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

答案 1 :(得分:4)

数据库将在SQL Server重新启动时被标记为可疑,并且无法访问,而无需进行深入调整以恢复它。

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

你当然可以忽略我们,删除它并亲自看看......

答案 2 :(得分:1)

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

假设上述3个场景中的一个是真的,并且您确实删除了.LDF文件,那么当SQL服务器重新启动时,DB将会怀疑。如果数据库处于脱机状态并且您尝试将其重新联机,则会出现错误:

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文件???

拉​​吉

答案 3 :(得分:0)

保持.LDF file大小的最佳方法是:

  • 每天至少定期进行一次事务日志备份或
  • 将恢复模式从完整更改为简单(默认情况下,完整)