我有一个 SQL Server 数据库,其中的日志文件很大并且每天都在增长。
我已经归档了数据库中的数据,然后进行了完整备份。我期待日志基本上是“空的”。例如,它可能是相同的物理大小,但现在有很多可用空间。但是,它目前只有 0.1% 免费。
任何想法为什么日志中仍然几乎没有可用空间?
我有一个 SQL Server 数据库,其中的日志文件很大并且每天都在增长。
我已经归档了数据库中的数据,然后进行了完整备份。我期待日志基本上是“空的”。例如,它可能是相同的物理大小,但现在有很多可用空间。但是,它目前只有 0.1% 免费。
任何想法为什么日志中仍然几乎没有可用空间?
日志文件的增长取决于数据库的恢复模式和事务日志备份。如果数据库不重要并且数据丢失在任何情况下都不是问题,那么它应该处于简单恢复模式。这允许 SQL Server 在提交事务并且日志增长保持在限制时重用日志空间。但是如果数据库很关键并且可能需要时间点恢复,那么数据库必须处于完全恢复模式。这表明 SQL Server 将所有日志保留在事务日志文件中并且在备份之前不会重复使用(事务日志备份)。
如果归档意味着您在获取一些数据并以任何其他格式保存后删除了一些数据。然后必须记住,删除数据永远不会减少数据或日志文件的物理大小,尽管空间可以供数据库重用。
可用空间
BACKUP DATABASE
(完整备份、差异备份、文件/文件组备份、仅副本)不会释放任何文件中的空间。如果有的话,它会占用日志文件中的一些空间来记录其操作。BACKUP LOG
截断日志,这通常会释放空间。发生检查点时,简单恢复模型数据库会截断其日志。
文件大小
任何备份操作都不会影响文件的物理大小。
执行此操作的唯一命令是
DBCC SHINKFILE
andDBCC SHRINKDB
(在 SSMS 中,右键单击数据库,选择 Tasks,Shrink)。