我真的需要保留 .LDF 文件吗?

Mic*_*nny 10 sql-server-2005 sql-server backup datafile

每个月我们都会制作生产数据库的月末快照。这些月末快照严格用于报告目的,没有对其进行任何插入、更新或删除。这些快照中的每一个都有一个.MDF.LDF文件。

我想删除.LDF文件并释放服务器上的一些空间。我需要保留.LDF文件有什么原因吗?

澄清:

我们的生产数据库每晚从另一个系统的文件提取中重新创建。我们只报告生产数据库......从来没有更新过。

每晚流程:据
我所知......
每天晚上数据库表都会被截断
这些表通过一系列批量插入语句填充
索引被重建

Tho*_*ger 16

您不应该删除日志文件。如果您尝试在没有日志的情况下重新附加数据文件,SQL Server 可以在技术上重新创建它,但存在一些潜在问题,例如分离数据库时是否有打开的事务。在这种情况下,您将完全丢失数据。

占用空间,不要删除您的日志文件。你是在自找麻烦。

请参阅有关事务日志的这篇文章,特别是“日志错误管理”部分。


jga*_*r04 9

另一个答案中所述,您无法删除日志文件。您可以做的是将数据库设置为READ_ONLY. 数据库在 中READ_ONLY,不允许修改,日志文件也不会增长。您可以将日志文件的大小减小到最小大小并实现最小占用空间的目标。要在READ_ONLY运行以下命令中设置数据库:

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO
Run Code Online (Sandbox Code Playgroud)

您可以将数据库改回READ_WRITE,进行任何需要的更改,然后将其设置为READ_ONLY您需要的任何时间。

仍然需要日志文件来维护数据库的 ACID 属性。


Mic*_*nny -3

这是我想出的缩小 LDF 文件的解决方案。

  1. 分离数据库
  2. 将 LDF 文件重命名为 *_old.ldf
  3. 附加数据库
  4. 删除对丢失的 LDF 的引用

这将重新创建大小为 504K 的 LDF 文件。

  1. 删除*_old.ldf
  2. 清空回收站

这回收了服务器上大量的磁盘空间。它对我们有用,因为所有这些数据库都只是静态报告数据库。不会对这些数据库执行任何插入、更新或删除操作。

2019-09-24 更新:是的,我同意这是一个非常糟糕的主意。我几乎立即停止这样做。我已使用填充因子 100 重建了所有索引。仅缩小了 .ldf 文件。并将所有数据库更改为只读。

  • 哇,这真是个坏主意。如果数据库未成功分离,或者在 1 到 3 之间的某个位置丢失或损坏怎么办?你完蛋了。您的数据库有零个副本。 (6认同)
  • 执行此操作的正确方法是: 1. 对数据库进行 COPY_ONLY 备份。2. 在报告服务器上恢复它。3. 将恢复设置为简单并将恢复的副本标记为只读。4. 手动缩小日志文件。是的,您同时需要空间,但您可以保住工作! (3认同)