SQL Server 2012中的SQL日志文件未收缩

SQL Server 2012中的SQL日志文件未收缩,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,我正在处理其他人的备份维护计划,日志文件有问题,我的数据库位于一个驱动器上,大小为31 GB,日志文件位于另一台服务器上,大小为20 GB,数据库处于完全恢复模式。有一个每天运行一次的维护计划来执行完整备份,还有一个计划每15分钟备份一次日志文件。我已经检查了日志文件备份到的驱动器,仍然有足够的空间,但备份后日志文件从未变小,维护计划中是否缺少一些内容 提前感谢您描述的情况似乎很好 事务日志备份不会收缩日志文件。但是,它会截断日志文件,这意味着可以重用空间: 从联机丛书(): 日志截断会自动释放

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


提前感谢

您描述的情况似乎很好

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

从联机丛书():

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

此外,来自:

在简单恢复模型下,日志截断是自动的 必须防止日志填充。截断过程减少了 通过将虚拟日志文件标记为非活动来确定逻辑日志文件的大小 不包含逻辑日志任何部分的日志文件

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

从这里开始,你也应该收缩文件吗?一般来说,答案是否定的。假设您的数据库不会突然出现大规模的一次性使用高峰,事务日志的大小将增长到能够适应典型工作负载的大小

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


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

我不知道这是否适用于您的情况,但SQL Server 2012的早期版本有一个错误,当模型设置为“简单恢复模型”时会出现该错误。对于模型设置为Simple的任何数据库,日志文件将继续增长,以达到2097152 MB的限制。如果之后更改为“完全”,此选项仍然适用。KB的一篇文章指出,先改为完整,然后再改回简单是一种变通方法——这不是我的经验。为SP1运行CU7是唯一对我有效的技巧


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

如果您将恢复更改为“完全”,然后再更改为“简单”,则收缩功能将成功运行。

嗨,伊恩,再次感谢您提供的非常深入的答案,非常感谢。我想知道大小的原因是,有人告诉我日志文件以前只有几个100MB,这在当时听起来与数据库的大小不相称。由于它现在是事务性复制的一部分,所以的大小是否会比以前明显的大小增加这么多?因为事务性复制确实依赖于事务日志,所以在复制完成且不再需要之前,无法截断日志中的数据。因此,从这个意义上说,它将产生影响,尽管很明显,根据一些一般信息来量化事物是很困难的!也就是说,我只会担心日志是否继续与工作量的增长不成比例;这可能需要进一步的调查。这不适用于海报的问题。他从来没有提到任何地方,他正在使用简单的恢复模式。事实上,他说他正在使用完全恢复模式。我应该写一篇更具描述性的文章。如果数据库最初是在简单恢复模型中创建的,后来又更改为完全恢复,则此选项确实适用。这是一个令人讨厌的错误。请编辑您的帖子并添加相关信息。这将是很有帮助的,因为它不需要每个人都阅读整个知识库文章并找出相关的内容。错误-您更改为“简单”,然后返回到“完整”。