每个月我们都会对生产数据库进行月末快照。这些月末快照仅用于报告目的,从未对其进行过插入、更新或删除操作。这些快照中的每一个都有一个.MDF
和.LDF
文件。
我想删除.LDF
文件并释放服务器上的一些空间。我有什么理由需要保留这些.LDF
文件吗?
澄清:
我们的生产数据库每晚都会从另一个系统的文件提取中重新创建。我们只报告生产数据库......从未进行过更新。
每晚处理:
据
我所知...
每晚都会截断数据库表
通过一系列批量插入语句填充表
重建索引
每个月我们都会对生产数据库进行月末快照。这些月末快照仅用于报告目的,从未对其进行过插入、更新或删除操作。这些快照中的每一个都有一个.MDF
和.LDF
文件。
我想删除.LDF
文件并释放服务器上的一些空间。我有什么理由需要保留这些.LDF
文件吗?
澄清:
我们的生产数据库每晚都会从另一个系统的文件提取中重新创建。我们只报告生产数据库......从未进行过更新。
每晚处理:
据
我所知...
每晚都会截断数据库表
通过一系列批量插入语句填充表
重建索引
您不应该删除日志文件。如果您尝试在没有日志的情况下重新附加数据文件,SQL Server 在技术上可以重新创建它,但存在一些潜在问题,例如在分离数据库时是否存在打开的事务。在这种情况下,您将完全丢失数据。
占用空间,不要删除你的日志文件。你是在自找麻烦。
请参阅有关事务日志的这篇文章,特别是“日志管理不善”部分。
如另一个答案中所述,您无法删除日志文件。您可以做的是将数据库设置为
READ_ONLY
. 数据库在 中READ_ONLY
,不允许修改,日志文件也不会增长。您可以将日志文件的大小减小到最小大小并实现最小占用空间的目标。要设置数据库,READ_ONLY
请运行以下命令:您可以将数据库更改回
READ_WRITE
,进行所需的任何更改,然后将其设置为READ_ONLY
您需要的任何时间。仍然需要日志文件来维护数据库的 ACID 属性。
事实上,您可以只使用 mdf 文件来创建数据库。它是sp_attach_single_file_db (Transact-SQL) 命令。请注意,它将在 Microsoft SQL Server 的未来版本中删除。但是,删除 LDF 文件并不明智。鲨鱼是对的“你是在自找麻烦。” 另一种观点-您的ldf文件很大吗?如果是,您可以对它们做点什么。
这是我想出的缩小 LDF 文件的解决方案。
这将重新创建一个大小为 504K 的 LDF 文件。
这已经回收了服务器上的大量磁盘空间。它对我们有用,因为所有这些数据库都只是静态报告数据库。永远不会对这些数据库执行任何插入、更新或删除操作。
2019-09-24 更新:是的,我同意这是一个非常糟糕的主意。我几乎立即停止这样做。我已经使用 100 的填充因子重建了所有索引。只缩小了 .ldf 文件。并将所有数据库更改为只读。