我的数据库文件看起来很可疑。 我们在生产阶段使用数据库。 而且我看到LDF文件越来越多。 而中密度纤维板文件似乎没有增长(我没有文件大小的历史来certificate这一点,但我认为这是不行的!我敢打赌!)
所以我猜可能会发生什么? 我怎么能强制合并到中密度纤维板?
您是否正在定期进行日志备份? 每30分钟一次? 开始进行日志备份,或将恢复模式更改为简单。
您可以随时在sys.databases的log_reuse_wait_desc列中看到保存日志的reaosn:
事务日志空间重用的描述目前正在等待下列之一:
- 没有
- CHECKPOINT
- LOG_BACKUP
- ACTIVE_BACKUP_OR_RESTORE
- ACTIVE_TRANSACTION
- DATABASE_MIRRORING
- REPLICATION
- DATABASE_SNAPSHOT_CREATION
- LOG_SCAN
- OTHER_TRANSIENT
有关更多信息,请参阅可能会延迟日志截断的因素 。
LDF跟踪在MDB文件上执行的所有事务,而不仅仅是实际的数据。 因此,即使您没有插入新数据(也logging更新和删除语句),日志文件仍将继续增长,直到您对相关数据库执行完全备份。 一旦完成了完整的备份,SQL就不需要将所有不活动的事务都保存到备份中,因为您只需从备份中进行恢复即可。 然后你可以缩小文件的大小。 定期备份将阻止您必须执行最后一步。
这里有一些微软知识库文章来填补你在一些确切的步骤,你可以采取。
另外,如果这是重要的数据,请阅读一些关于为什么不应该截断日志文件或执行no_log备份选项的文章。 从本质上讲,如果您还没有完成备份并执行这些function之一,那么您将丢掉可用于帮助恢复数据库的无备份数据。
SQL日志文件陷阱
为了回答你的第一个担忧:
您的数据库文件(MDF)可能仍然有可用空间,从它的初始默认大小。 数据库通常在其使用的文件内部具有可用空间。 最终,它会填满,然后你会看到它变得更大(假设你已经启用)。 直到达到这一点,即使数据正在保存,大小也不会改变。
就日志文件而言:
你问这个问题的事实告诉我,你不是很熟悉SQL恢复概念。 你需要最新的恢复? 如果您发生灾难性故障,您是要恢复最后一次完整备份还是要重新应用事务日志?
如果您无法正确pipe理或应用事务日志,则最简单的解决方法是将数据库设置为SIMPLE恢复模式。 你可以基本上忘记日志文件(它会停止生长失控)。