SQL Server 日志文件快速增长

Posted

技术标签:

【中文标题】SQL Server 日志文件快速增长【英文标题】:SQL Server Log Files growing rapidly 【发布时间】:2017-09-08 16:11:54 【问题描述】:

我们有 SQL Server 2012(在 Windows Server 2012 R2 上)和为 AlwaysON (01-03) 配置的数据库,我们每天进行一次完整备份,每 5 分钟记录一次备份。数据库大小为 288 GB(mdf - 88 GB,ndf - 110 GB,ldf - 84 GB)。

没有长交易。我将日志文件压缩了两次并购买了 4 GB,但在 2 天内它们又恢复到了 88 GB。

我该如何解决这个问题?

【问题讨论】:

SQL Server 2012 RTM 有一个被 MS 承认的错误,导致日志文件在某些​​情况下无故增长很多,至少在简单的恢复模式下是这样。这在 SP2 或 SP3 中已修复,如果您仍在 RTM 或 SP1 中,您可以尝试安装最新的 SP。 【参考方案1】:

据我了解,事务日志文件可能增长的一些原因是:

    长时间运行的查询:

    select name, log_reuse_wait_desc 
    from sys.databases  
    

    这应该显示事务日志文件没有释放空间的原因

    优化作业运行,也可能导致事务日志文件增长

    日志备份频率设置不正确 - 有时最好的选择是在任何优化作业运行之前 - 检查日志文件使用情况 - 如果您需要在任何优化作业运行之前设置日志备份

安排适当的日志备份是处理日志增长的最佳方式,除非出现异常情况。

【讨论】:

【参考方案2】:

我两次压缩日志文件并购买到 4GB

由于您能够缩小日志并且日志文件大小减小,因此您看到的日志增长可能是由于事务量大..

以下是找出哪些事务导致日志增长的方法...

select 
    txt.text,
    sum(trn.database_transaction_log_bytes_used + 
        trn.database_transaction_log_bytes_reserved) as totallogused 
from 
    sys.dm_tran_database_transactions trn
join
    sys.dm_exec_requests ec on ec.transaction_id=trn.transaction_id
cross apply
    sys.dm_exec_sql_text(EC.sql_handle) txt
group by 
    txt.text

【讨论】:

在 4 个文本中,我看到更新 SP 正在使用 1001482 totallogused。我怎样才能阻止这种情况? 为什么要停止它..?任何 dml 语句都将使用 log..你需要为你的 log 增长做计划 对规划日志增长有什么建议吗?请 搜索容量规划 好吧,你的意思是应该分配更多的磁盘空间。如果是这样,那么日志正在增长..如果 ldf 文件越来越多,是否可以(现在显示 90GB)。

以上是关于SQL Server 日志文件快速增长的主要内容,如果未能解决你的问题,请参考以下文章

SQL server怎样修改主日志文件的增长上线

SQL SERVER事物日志增长过快

sql server 2008 的事务日志文件存储数据库的啥情况

SQL Server 快速清除日志文件的方法

sqlserver数据库文件增长过快,MDF文件过大,不是日志文件大。

sql server日志已满报错