我的数据库文件看起来非常可疑。我们在生产阶段使用数据库。我看到 LDF 文件越来越大。而 MDF 文件似乎根本没有增长(我没有文件大小历史记录来证明这一点,但我认为它没有这样做!!我敢打赌!)
那么我猜会发生什么?我该如何强制合并到 MDF?
答案1
您是否定期进行日志备份?比如每 30 分钟一次?要么开始进行日志备份,要么将恢复模式更改为简单。
你总是可以看到日志重用的原因系统数据库,log_reuse_wait_desc 列:
事务日志空间重用的描述目前正在等待下列操作之一:
- 没有什么
- 检查站
- 日志备份
- 主动备份或恢复
- 活动交易
- 数据库镜像
- 复制
- 数据库快照创建
- 日志扫描
- 其他_临时
有关详细信息,请参阅For more information, see可能延迟日志截断的因素。
答案2
LDF 会跟踪在 MDB 文件上执行的所有事务,而不仅仅是实际数据。因此,即使您没有插入新数据(更新和删除语句也会被记录),日志文件也会继续增长,直到您对相关数据库进行完整备份。一旦您进行了完整备份,SQL 就不需要保留备份之前的所有非活动事务,因为您可以简单地从备份中恢复。然后,您就可以将文件缩小到原来的大小。定期备份将使您不必执行这最后一步。
以下是一些MS 知识库文章向您介绍一些您可以采取的具体步骤。
此外,如果这是重要数据,请阅读几篇文章,了解为什么您不应该执行诸如截断日志文件或执行 no_log 备份选项之类的操作。本质上,如果您没有进行备份并执行其中一项功能,那么您就是在丢弃可用于帮助恢复数据库的未备份数据。
答案3
回答你的第一个疑问:
您的数据库文件 (MDF) 可能仍有其初始默认大小的可用空间。数据库通常在其使用的文件中有可用空间。最终,它将填满,然后您会看到它变大(假设您已启用此功能)。在达到这一点之前,即使数据正在保存到其中,大小也不会改变。
就日志文件而言:
你问这个问题说明你对 SQL 恢复概念不太熟悉。你需要最新的恢复吗?如果发生灾难性故障,你会恢复上次完整备份还是会重新应用事务日志?
如果您无法正确管理或应用事务日志,那么解决问题的最简单方法是将数据库设置为简单恢复模式。然后,您基本上可以忘记日志文件(它将停止失控增长)。