sql server日志处理不当造成的隐患详解

 更新时间:2019年12月03日 08:36:31   作者:麦叶  
这篇文章主要给大家介绍了关于sql server日志处理不当造成的隐患的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用sql server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

事故背景:一大早还在路上,群里陆续有人反馈系统一直报错 “ Unknown error 258 ”,后来查询日志发现错误日志

第一反应是不是数据库连接不够用了?导致超时?但是通过sql查询当时连接也只有40个左右,于是继续排查问题,发现dbserver机器这段时间磁盘io操作特别的高,很不正常,详见下图


发现磁盘io问题,继续查看sqlserver日志,发现原因: “Autogrow of file ‘xxxx_log' in database ‘xxxx' was cancelled by user or timed out after 3398 milliseconds.  Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.”


发现这种问题因为log日志文件太大了一直没有压缩过,并且创建数据库的时候默认选择了10%的增量来扩大log增量文件,这样日志文件的10%会越来越大从而产生超时高io操作

解决方案:

1、定期清理log文件,防止log文件越来越大

 USE [master]
 GO
 ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
 GO
 ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
 GO
 USE 数据库名
 GO
 DBCC SHRINKFILE (N'数据库名_Log' , 11, TRUNCATEONLY) 
 GO
 USE [master]
 GO
 ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
 GO
 ALTER DATABASE 数据库名 SET RECOVERY FULL
 GO 

2、修改默认数据库log增量10% 为 500M(看具体情况,一般够了)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • Sql Server数据库实现表中字段的列加密

    Sql Server数据库实现表中字段的列加密

    本文主要介绍了Sql Server数据库实现表中字段的列加密,主要包括利用证书对数据进行加密和解密,利用非对称密钥对数据进行加密和解密,利用对称密钥对数据进行加密和解密,感兴趣的可以了解一下
    2023-10-10
  • 更改SQL Server端口的设置指南

    更改SQL Server端口的设置指南

    SQL Server是微软推出的关系型数据库管理系统,它支持多种操作系统平台,出于安全或其他考虑,我们可能需要更改SQL Server实例的默认端口,本文将指导你如何更改SQL Server的端口设置,需要的朋友可以参考下
    2024-07-07
  • SSMS中出现两个相同的服务器名称的问题解决

    SSMS中出现两个相同的服务器名称的问题解决

    在SSMS的【连接到服务器】页面,有时候可能会出现多个相同的服务器名称本文主要介绍了SSMS中出现两个相同的服务器名称的问题解决,感兴趣的可以了解一下
    2024-05-05
  • sqlserver数据库获取数据库信息

    sqlserver数据库获取数据库信息

    这篇文章主要介绍了sqlserver数据库获取数据库文件信息,大家参考使用吧
    2014-01-01
  • SQL Server中实现错误处理

    SQL Server中实现错误处理

    这篇文章介绍了SQL Server中实现错误处理的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • SQL Server的FileStream和FileTable深入剖析

    SQL Server的FileStream和FileTable深入剖析

    互联网时代数据是爆炸式增长,我们常常需要把结构化数据和非结构化数据存储在一起。本文将介绍几种解决方案
    2012-11-11
  • Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识

    Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集,有一点需要注意的是UNION 内部的 SELECT 语句必须拥有相同数量的列,接下来为大家详细介绍下,感兴趣的各位可以参考下哈
    2013-03-03
  • Sql数据库中去掉字段的所有空格小结篇

    Sql数据库中去掉字段的所有空格小结篇

    这篇文章主要介绍了Sql数据库中去掉字段的所有空格小结篇,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 浅析SQL Server中的执行计划缓存(上)

    浅析SQL Server中的执行计划缓存(上)

    这篇文章主要介绍了浅析SQL Server中的执行计划缓存(上)的相关资料,需要的朋友可以参考下
    2015-12-12
  • sqlserver 字符串分拆 语句

    sqlserver 字符串分拆 语句

    sqlserver下字符串分拆实现语句,大家可以参考下。
    2009-09-09

最新评论