DBCC SHRINKFILE() 如何影响备份?

sh-*_*eta 2 sql-server-2005 sql-server dbcc

我有一堆 SQL 2005 数据库,它们已经存在了很长时间,并且由于各种原因经历了事务日志自动增长。定期备份现在可以控制事务日志的使用,但文件仍然很大且碎片化。

我想通过减少 VLF 的数量来回收一些空间并提高性能。但是,我也不想中断我们的预定备份。DBCC SHRINKFILE() 如何影响事务日志备份链?或者是吗?如果我将 TRUNCATEONLY 添加到命令中,这会改变吗?

请注意,这是一次性修复。我很清楚,定期缩小日志文件是一件坏事——如果这些数据库配置了合理的初始大小和自动增长设置,并且备份在其历史记录的每一天都完美运行,这将不是问题。

Ric*_*ard 5

根据 Microsoft 支持 http://support.microsoft.com/kb/272318,SQL Server 通过删除尽可能多的 VLF 来缩小日志文件。它在尝试达到目标大小而不会弄乱您的备份链时这样做。

但是,如果您确实使用 TRUNCATE_ONLY,则序列会变得混乱,因此您需要在计划备份之前立即执行此操作,或者在此之后立即执行完整备份。