在 SQL Server 中,如何在不(DBCC)收缩的情况下减少日志文件的大小。我知道缩小日志文件会释放一些空间,但也会导致碎片。以简单模式执行检查点或以完整模式备份事务日志应该可以解决问题,但在我的一种情况下它不起作用。任何建议/链接都将有助于防止日志文件碎片。
在 SQL Server 中,如何在不(DBCC)收缩的情况下减少日志文件的大小。我知道缩小日志文件会释放一些空间,但也会导致碎片。以简单模式执行检查点或以完整模式备份事务日志应该可以解决问题,但在我的一种情况下它不起作用。任何建议/链接都将有助于防止日志文件碎片。
一旦日志要求磁盘空间,唯一的取回方法就是缩小。检查点和截断将释放日志文件中的空间(现在可供日志将来使用),但文件在磁盘上的实际占用空间保持不变。
阅读这些文章,不仅可以了解它是如何工作的,还可以了解使用它的利弊。大多数 DBA 都会同意,在大多数正常情况下缩小并不是一个好主意(正如您在问题中所逃避的那样)。
http://msdn.microsoft.com/en-us/library/ms365418.aspx
利弊
http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/a9e92f1b-7a27-4999-b241-eadadbb0a057
更改日志文件物理大小的唯一方法是使用 DBCC SHRINK。CHECKPOINT 只会进行日志截断,但不会更改物理日志文件的大小。\
http://technet.microsoft.com/en-us/magazine/2009.02.logging.aspx
我不确定 OP 指的是物理足迹。他表示 CHECKPOINT 或日志备份都释放了空间。这让我觉得他指的是有多少日志是“活动的”。我的建议是检查打开的事务,这会阻止日志的活动部分被清除 - DBCC OPENTRAN。