sqlserver 数据库如何阻止日志快速增长?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 数据库如何阻止日志快速增长?相关的知识,希望对你有一定的参考价值。

我的应用系统用的sqlserver2000数据库,目前数据文件(.mdf)大小为7G+,但是日志文件(.ldf)近几个飞速增长,每月都增长70G以上。此外我的数据库要被另一个系统通过实时读取日志的方式采集数据,并在异地生成一个同样的数据库。
请问怎么设置可以阻止数据库的快速增长,并且不能影响采集系统采集到我系统的数据?

参考技术A 数据库属性中,文件--》日志--》自动增长,去掉启用自动增长的√ 参考技术B 记得日志可以压缩,或者禁用日志,但是存在风险 参考技术C 好像不可以阻止把 你可以每隔一段时间清理一下日志文件

SQL Server 日志文件快速增长

【中文标题】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)。

以上是关于sqlserver 数据库如何阻止日志快速增长?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 日志文件快速增长

如何清除SQLserver 日志

如何清除SQLserver 日志

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

如何阻止 SQL Server CE 3.5 更改跟踪表无限增长?

SQL日志增长较快时如何进行压缩比较保险