SQL日志文件在SQL Server 2012中不缩小

时间:2013-07-25 13:49:34

标签: sql sql-server sql-server-2008 sql-server-2012

我正在处理其他人的备份维护计划并且日志文件存在问题,我有一个数据库位于一个大小为31 GB的驱动器上,而一个日志文件位于另一个服务器上,大小为20 GB,数据库处于完全恢复模型。有一个维护计划每天运行一次以执行完整备份,另一个计划每15分钟备份一次日志文件。我已经检查了日志文件备份到的驱动器,并且仍然有足够的空间,但备份后日志文件永远不会变小,维护计划中是否缺少某些内容?

提前致谢

3 个答案:

答案 0 :(得分:7)

你描述的情况似乎很好。

事务日志备份收缩日志文件。但是,它会截断日志文件,这意味着可以重用空间:

来自联机丛书(Transaction Log Truncation):

  

日志截断会自动释放逻辑日志中的空间以供重用   通过交易日志。

此外,来自Managing the Transaction Log

  

日志截断,在简单恢复模型下是自动的   保持日志填充至关重要。截断过程减少了   通过将虚拟标记为非活动状态来记录逻辑日志文件的大小   日志文件不包含逻辑日志的任何部分。

这意味着每次在您的方案中进行事务日志备份时,它都会在文件中创建可供后续事务使用的空闲空间。

由此引导,你是否应该缩小文件?一般来说,答案是否定的。假设您的数据库没有突然出现大量的一次性使用高峰,事务日志将增长到适应典型工作负载的大小。

这意味着如果你开始收缩日志,SQL Server将只需要再次增长...这是一项资源密集型操作,会影响服务器性能,并且在日志增长时无法完成任何事务。

目前的计划和文件大小对我来说都是合理的。

答案 1 :(得分:2)

我不知道这是否适用于您的情况,但是当模型设置为简单恢复模型时,早期版本的SQL Server 2012会出现一个错误。对于使用模型设置为“简单”创建的任何数据库,日志文件将继续增长,以尝试达到2,097,152 MB的限制。如果您之后改为Full,这仍然适用。知识库文章2830400表示改为Full,然后改回Simple是一种解决方法 - 这不是我的经验。运行CU 7 for SP1是唯一对我有用的技巧。

本文提供了解决此错误的第一个更新的链接:“SQL Server 2012 SP1的累积更新4”,以及“SQL Server 2012的累积更新7”(如果尚未安装SP1)。

答案 2 :(得分:0)

如果将恢复更改为完全,然后再更改为简单,则缩小将成功运行。